相关疑难解决方法(0)

如何使用Pandas存储数据框

现在我CSV每次运行脚本时都会导入一个相当大的数据帧.是否有一个很好的解决方案可以保持数据帧在运行之间始终可用,因此我不必花费所有时间等待脚本运行?

python dataframe pandas

283
推荐指数
7
解决办法
26万
查看次数

如何阅读带有pandas的6 GB csv文件

我试图在pandas中读取一个大的csv文件(aprox.6 GB),我收到以下内存错误:

MemoryError                               Traceback (most recent call last)
<ipython-input-58-67a72687871b> in <module>()
----> 1 data=pd.read_csv('aphro.csv',sep=';')

C:\Python27\lib\site-packages\pandas\io\parsers.pyc in parser_f(filepath_or_buffer, sep, dialect, compression, doublequote, escapechar, quotechar, quoting, skipinitialspace, lineterminator, header, index_col, names, prefix, skiprows, skipfooter, skip_footer, na_values, na_fvalues, true_values, false_values, delimiter, converters, dtype, usecols, engine, delim_whitespace, as_recarray, na_filter, compact_ints, use_unsigned, low_memory, buffer_lines, warn_bad_lines, error_bad_lines, keep_default_na, thousands, comment, decimal, parse_dates, keep_date_col, dayfirst, date_parser, memory_map, nrows, iterator, chunksize, verbose, encoding, squeeze, mangle_dupe_cols, tupleize_cols, infer_datetime_format)
    450                     infer_datetime_format=infer_datetime_format)
    451 
--> 452         return _read(filepath_or_buffer, kwds)
    453 
    454     parser_f.__name__ …
Run Code Online (Sandbox Code Playgroud)

python memory csv chunks pandas

166
推荐指数
10
解决办法
18万
查看次数

阅读一个巨大的.csv文件

我目前正在尝试从Python 2.7中的.csv文件读取数据,最多包含100万行和200列(文件范围从100mb到1.6gb).对于300,000行以下的文件,我可以(非常慢)地执行此操作,但是一旦我超过该值,我就会出现内存错误.我的代码看起来像这样:

def getdata(filename, criteria):
    data=[]
    for criterion in criteria:
        data.append(getstuff(filename, criteron))
    return data

def getstuff(filename, criterion):
    import csv
    data=[]
    with open(filename, "rb") as csvfile:
        datareader=csv.reader(csvfile)
        for row in datareader: 
            if row[3]=="column header":
                data.append(row)
            elif len(data)<2 and row[3]!=criterion:
                pass
            elif row[3]==criterion:
                data.append(row)
            else:
                return data
Run Code Online (Sandbox Code Playgroud)

getstuff函数中else子句的原因是所有符合条件的元素都将在csv文件中一起列出,所以当我越过它们时我会离开循环以节省时间.

我的问题是:

  1. 如何才能让这个与更大的文件一起使用?

  2. 有什么方法可以让它更快吗?

我的电脑有8GB RAM,运行64位Windows 7,处理器是3.40 GHz(不确定你需要什么信息).

非常感谢您的帮助!

python csv file python-2.7

95
推荐指数
5
解决办法
13万
查看次数

如何使用python pandas处理传入的实时数据

使用pandas处理实时传入数据的最佳/ pythonic方法是哪种?

每隔几秒钟我就会收到以下格式的数据点:

{'time' :'2013-01-01 00:00:00', 'stock' : 'BLAH',
 'high' : 4.0, 'low' : 3.0, 'open' : 2.0, 'close' : 1.0}
Run Code Online (Sandbox Code Playgroud)

我想将它附加到现有的DataFrame,然后对其进行一些分析.

问题是,只是使用DataFrame.append追加行可能导致所有复制的性能问题.

我试过的事情:

一些人建议预先分配一个大的DataFrame并在数据进入时更新它:

In [1]: index = pd.DatetimeIndex(start='2013-01-01 00:00:00', freq='S', periods=5)

In [2]: columns = ['high', 'low', 'open', 'close']

In [3]: df = pd.DataFrame(index=t, columns=columns)

In [4]: df
Out[4]: 
                    high  low open close
2013-01-01 00:00:00  NaN  NaN  NaN   NaN
2013-01-01 00:00:01  NaN  NaN  NaN   NaN
2013-01-01 00:00:02  NaN  NaN  NaN   NaN
2013-01-01 00:00:03  NaN  NaN  NaN   NaN
2013-01-01 …
Run Code Online (Sandbox Code Playgroud)

python pandas

57
推荐指数
2
解决办法
2万
查看次数

如何查询pandas中的MultiIndex索引列值

代码示例:

In [171]: A = np.array([1.1, 1.1, 3.3, 3.3, 5.5, 6.6])

In [172]: B = np.array([111, 222, 222, 333, 333, 777])

In [173]: C = randint(10, 99, 6)

In [174]: df = pd.DataFrame(zip(A, B, C), columns=['A', 'B', 'C'])

In [175]: df.set_index(['A', 'B'], inplace=True)

In [176]: df
Out[176]: 
          C
A   B      
1.1 111  20
    222  31
3.3 222  24
    333  65
5.5 333  22
6.6 777  74 
Run Code Online (Sandbox Code Playgroud)

现在,我想要检索A值:
Q1:在范围[3.3,6.6]中 - 预期返回值:[3.3,5.5,6.6]或[3.3,3.3,5.5,6.6],如果是最后一个,则[3.3,5.5 ]或[3.3,3.3,5.5],如果没有.
Q2:在[2.0,4.0]范围内 - 预期回报值:[3.3]或[3.3,3.3]

对于任何其他MultiIndex维度也是如此,例如B值:
Q3 …

python indexing slice multi-index pandas

56
推荐指数
3
解决办法
8万
查看次数

如何从SQL查询创建大型pandas数据框而不会耗尽内存?

我无法从MS SQL Server数据库查询大于500万条记录的表.我希望能够选择所有记录,但在选择大量数据到内存时,我的代码似乎失败了.

这有效:

import pandas.io.sql as psql
sql = "SELECT TOP 1000000 * FROM MyTable" 
data = psql.read_frame(sql, cnxn)
Run Code Online (Sandbox Code Playgroud)

...但这不起作用:

sql = "SELECT TOP 2000000 * FROM MyTable" 
data = psql.read_frame(sql, cnxn)
Run Code Online (Sandbox Code Playgroud)

它返回此错误:

File "inference.pyx", line 931, in pandas.lib.to_object_array_tuples
(pandas\lib.c:42733) Memory Error
Run Code Online (Sandbox Code Playgroud)

我在这里读到,从csv文件创建数据帧时存在类似的问题,并且解决方法是使用'iterator'和'chunksize'参数,如下所示:

read_csv('exp4326.csv', iterator=True, chunksize=1000)
Run Code Online (Sandbox Code Playgroud)

是否有类似的SQL数据库查询解决方案?如果没有,首选的解决方法是什么?我是否需要通过其他方法读取块中的记录?我在这里阅读了一些关于在pandas中处理大型数据集的讨论,但执行SELECT*查询似乎需要做很多工作.当然有一种更简单的方法.

python sql bigdata pandas

35
推荐指数
3
解决办法
5万
查看次数

什么是上传一个很大的CSV文件笔记本蟒蛇大熊猫工作的最快方法?

我正在尝试上传一个250MB的csv文件.基本上有400万行和6列时间序列数据(1分钟).通常的程序是:

location = r'C:\Users\Name\Folder_1\Folder_2\file.csv'
df = pd.read_csv(location)
Run Code Online (Sandbox Code Playgroud)

这个过程大约需要20分钟!!! 非常初步我已经探索了以下选项

我想知道是否有人比较了这些选项(或更多)并且有明显的赢家.如果没有人回答,将来我会发布我的结果.我现在没有时间.

python csv dataframe pandas

33
推荐指数
1
解决办法
7607
查看次数

在Pandas中解析大型CSV文件的最快方法

我在这里使用熊猫来分析大数据文件:http://www.nielda.co.uk/betfair/data/它们的大小约为100兆.

来自csv的每个负载需要几秒钟,然后有更多时间来转换日期.

我已经尝试加载文件,将日期从字符串转换为日期时间,然后将它们重新保存为pickle文件.但加载它们也需要几秒钟.

我可以使用哪些快速方法从磁盘加载/保存数据?

python pandas

24
推荐指数
3
解决办法
2万
查看次数

Pandas"Group By"查询HDFStore中的大数据?

我有大约700万行,HDFStore超过60列.数据超出了我的记忆能力.我希望根据列"A"的值将数据聚合成组.pandas 拆分/聚合/组合的文档假定我已经拥有了所有数据DataFrame,但是我无法将整个存储读入内存中DataFrame.将数据分组的正确方法是HDFStore什么?

python pytables pandas

20
推荐指数
1
解决办法
7467
查看次数

在大熊猫中为大型数据集排序

我想按给定列对数据进行排序,特别是p值.但是,问题是我无法将整个数据加载到内存中.因此,以下内容不起作用或者仅适用于小型数据集.

data = data.sort(columns=["P_VALUE"], ascending=True, axis=0)
Run Code Online (Sandbox Code Playgroud)

是否有一种快速方法可以按给定列对数据进行排序,该列只考虑块并且不需要在内存中加载整个数据集?

python pandas

19
推荐指数
2
解决办法
8164
查看次数

标签 统计

python ×10

pandas ×9

csv ×3

dataframe ×2

bigdata ×1

chunks ×1

file ×1

indexing ×1

memory ×1

multi-index ×1

pytables ×1

python-2.7 ×1

slice ×1

sql ×1