Tag: pandas

pandas:用操作符链过滤DataFrame的行

大多数pandas操作都可以通过操作符链接来实现( groupby , aggregate , apply等),但我发现过滤行的唯一方法是通过正常的括号索引 df_filtered = df[df['column'] == value] 这是没有吸引力的,因为它需要我把df赋值给一个variables,然后才能过滤它的值。 有什么更像以下? df_filtered = df.mask(lambda x: x['column'] == value)

NumPy或Pandas:保持数组types为整数,同时具有NaN值

是否有一个首选的方法来保持numpy数组的数据types固定为int (或int64或其他),同时还有一个列表中的元素列为numpy.NaN ? 特别是,我将内部数据结构转换为Pandas DataFrame。 在我们的结构中,我们有整数types的列仍然有NaN(但列的dtype是int)。 如果我们把这个数据框设置成DataFrame的话,似乎所有东西都会重新浮动,但我们真的很想成为int 。 思考? 事情尝试: 我尝试使用from_records()下的from_records()函数, coerce_float=False ,这没有帮助。 我也尝试使用NumPy屏蔽数组,NaN fill_value,也没有工作。 所有这些导致列数据types成为一个浮点数。

NaN和None有何区别?

我正在使用pandas readcsv()读取csv文件的两列,然后将值分配给字典。 这些列包含数字和字母的string。 偶尔有一些单元格是空的情况。 在我看来,读入该字典条目的值应该是None而不是nan 。 毫无疑问,空白单元格更具描述性,因为空单元格的值是空值,而nan表示读取的值不是数字。 我的理解是否正确, None与有什么区别? 为什么是nan而不是None ? 另外,我的字典检查任何空单元格已经使用numpy.isnan() : for k, v in my_dict.iteritems(): if np.isnan(v): 但这给了我一个错误,说我不能使用这个检查v 。 我想这是因为一个整数或浮点型variables,而不是一个string是为了使用。 如果这是真的,我怎么能检查一个“空细胞”/ nan案?

逻辑运算符,用于在Pandas中进行布尔索引

我在pandas的布尔指数工作。 问题是为什么声明: a[(a['some_column']==some_number) & (a['some_other_column']==some_other_number)] 工作正常,而 a[(a['some_column']==some_number) and (a['some_other_column']==some_other_number)] 存在错误? 例: a=pd.DataFrame({'x':[1,1],'y':[10,20]}) In: a[(a['x']==1)&(a['y']==10)] Out: xy 0 1 10 In: a[(a['x']==1) and (a['y']==10)] Out: ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

pandas时间序列图设置x轴主要和次要蜱和标签

我希望能够设置大pandas时间序列对象的时间序列图中的主要和次要xticks及其标签。 pandas0.9“新到”的页面说: “你可以使用to_pydatetime或注册转换器的时间戳types” 但我不能解决这个问题,所以我可以使用matplotlib ax.xaxis.set_major_locator和ax.xaxis.set_major_formatter (和minor)命令。 如果我在不转换pandas时间的情况下使用它们,则x轴刻度和标签最终会出错。 通过使用“xticks”参数,我可以将主要记号传递给pandas.plot,然后设置主要记号标签。 我无法解决如何使用这种方法做小勾号。 (我可以设置由pandas.plot设置的默认次要记号的标签) 这是我的testing代码: import pandas print 'pandas.__version__ is ', pandas.__version__ print 'matplotlib.__version__ is ', matplotlib.__version__ dStart = datetime.datetime(2011,5,1) # 1 May dEnd = datetime.datetime(2011,7,1) # 1 July dateIndex = pandas.date_range(start=dStart, end=dEnd, freq='D') print "1 May to 1 July 2011", dateIndex testSeries = pandas.Series(data=np.random.randn(len(dateIndex)), index=dateIndex) ax = plt.figure(figsize=(7,4), […]

大pandas持久的DataFrame

我正在探索作为一个长期SAS用户切换到Python和pandas。 然而,今天在运行一些testing时,我感到惊讶的是,当试图pandas.read_csv()一个128mb的csv文件时,python内存pandas.read_csv()了。 它有大约20万行和200列的大部分数字数据。 使用SAS,我可以将一个csv文件导入SAS数据集,并且可以像我的硬盘一样大。 pandas有类似的东西吗? 我经常使用大文件,无法访问分布式计算networking。

拆分(爆炸)pandas数据框string条目分隔行

我有一个pandas dataframe ,其中一列文本string包含逗号分隔值。 我想分割每个CSV字段,并为每个条目创build一个新的行(假设CSV是干净的,只需要拆分',')。 比如a应该变成b : In [7]: a Out[7]: var1 var2 0 a,b,c 1 1 d,e,f 2 In [8]: b Out[8]: var1 var2 0 a 1 1 b 1 2 c 1 3 d 2 4 e 2 5 f 2 到目前为止,我已经尝试了各种简单的函数,但是.apply方法在.apply使用时似乎只接受一行作为返回值,并且我无法使用.transform来工作。 我们欢迎所有的build议! 示例数据: from pandas import DataFrame import numpy as np a = […]

更改Pandas中列的数据types

我想将一个表格(表示为列表清单)转换为Pandas DataFrame。 作为一个非常简单的例子: a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']] df = pd.DataFrame(a) 什么是最好的方式将列转换为适当的types,在这种情况下,列2和3为浮动? 有没有办法在转换为DataFrame时指定types? 或者是最好先创buildDataFrame,然后遍历列来更改每列的types? 理想情况下,我想以dynamic的方式做到这一点,因为可以有数百个列,我不想明确指定哪些列是哪种types。 我只能保证每列都包含相同types的值。

iterrows是否有性能问题?

使用大pandas时,我注意到性能很差。 这是别人经历的吗? 是否特定于iterrows,并应该避免这个函数的特定大小的数据(我正在2-3万行)? 这个关于GitHub的讨论让我相信这是在数据框中混合dtypes时造成的,但是下面这个简单的例子表明,即使在使用一个dtype(float64)的时候它也存在。 这在我的机器上需要36秒钟: import pandas as pd import numpy as np import time s1 = np.random.randn(2000000) s2 = np.random.randn(2000000) dfa = pd.DataFrame({'s1': s1, 's2': s2}) start = time.time() i=0 for rowindex, row in dfa.iterrows(): i+=1 end = time.time() print end – start 为什么vector化的操作应用得这么快? 我想必须有一些逐行迭代。 我不知道如何在我的情况下不使用iterrows(这将保存将来的问题)。 因此,如果您始终能够避免这种迭代,我将不胜感激。 我正在根据不同数据框中的数据进行计算。 谢谢! —编辑:我想运行的简化版本已被添加到下面— import pandas as pd […]

如何读取pandas6 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, […]