我试图用pandas read_csv方法读取一个简单的空格分隔的文件。 不过,pandas似乎并不服从我的dtype论点。 也许我不正确地指定它? 我将这个简单的testing用例简化为read_csv 。 我实际上在我的“真实”场景中使用了converters参数,但为了简单起见,我将其删除了。 以下是我的ipython会话: >>> cat test.out ab 0.76398 0.81394 0.32136 0.91063 >>> import pandas >>> import numpy >>> x = pandas.read_csv('test.out', dtype={'a': numpy.float32}, delim_whitespace=True) >>> x ab 0 0.76398 0.81394 1 0.32136 0.91063 >>> xadtype dtype('float64') 我也尝试过使用numpy.int32或numpy.int64 。 这些select导致一个例外: AttributeError: 'NoneType' object has no attribute 'dtype' 我假设AttributeError是因为pandas不会自动尝试转换/截断浮点值为一个整数? 我正在32位机器上运行一个32位版本的Python。 >>> !uname […]
我有这样一个DataFrame: In [7]: frame.head() Out[7]: Communications and Search Business General Lifestyle 0 0.745763 0.050847 0.118644 0.084746 0 0.333333 0.000000 0.583333 0.083333 0 0.617021 0.042553 0.297872 0.042553 0 0.435897 0.000000 0.410256 0.153846 0 0.358974 0.076923 0.410256 0.153846 在这里,我想问如何得到每行有最大值的列名,所需的输出是这样的: In [7]: frame.head() Out[7]: Communications and Search Business General Lifestyle Max 0 0.745763 0.050847 0.118644 0.084746 Communications 0 […]
我在IPython中有以下数据框,每一行是一个股票: In [261]: bdata Out[261]: <class 'pandas.core.frame.DataFrame'> Int64Index: 21210 entries, 0 to 21209 Data columns: BloombergTicker 21206 non-null values Company 21210 non-null values Country 21210 non-null values MarketCap 21210 non-null values PriceReturn 21210 non-null values SEDOL 21210 non-null values yearmonth 21210 non-null values dtypes: float64(2), int64(1), object(4) 我想要应用一个groupby操作,计算每个date在“yearmonth”列中的所有内容的上限加权平均回报。 这按预期工作: In [262]: bdata.groupby("yearmonth").apply(lambda x: (x["PriceReturn"]*x["MarketCap"]/x["MarketCap"].sum()).sum()) Out[262]: […]
我采取了我的系列,并强制它的date时间列dtype = datetime64[ns] (虽然只需要一天的决议…不知道如何改变)。 import pandas as pd df = pd.read_csv('somefile.csv') column = df['date'] column = pd.to_datetime(column, coerce=True) 但绘图不起作用: ipdb> column.plot(kind='hist') *** TypeError: ufunc add cannot use operands with types dtype('<M8[ns]') and dtype('float64') 我想绘制一个直方图,只显示按星期,月份或年份计算的date 。 pandas有办法做到这一点吗?
假设,我有如下的条形图: 任何想法如何为每个载体设置不同的颜色? 例如,AK是红色的,GA是绿色的,等等? 我在Python中使用pandas和matplotlib >>> f=plt.figure() >>> ax=f.add_subplot(1,1,1) >>> ax.bar([1,2,3,4], [1,2,3,4]) <Container object of 4 artists> >>> ax.get_children() [<matplotlib.axis.XAxis object at 0x6529850>, <matplotlib.axis.YAxis object at 0x78460d0>, <matplotlib.patches.Rectangle object at 0x733cc50>, <matplotlib.patches.Rectangle object at 0x733cdd0>, <matplotlib.patches.Rectangle object at 0x777f290>, <matplotlib.patches.Rectangle object at 0x777f710>, <matplotlib.text.Text object at 0x7836450>, <matplotlib.patches.Rectangle object at 0x7836390>, <matplotlib.spines.Spine object at 0x6529950>, <matplotlib.spines.Spine […]
我有一个pandas数据框架,并想绘制一列的值与另一列的值。 幸运的是,有一些与数据框架相关的plot方法似乎正在做我所需要的: df.plot(x='col_name_1', y='col_name_2') 不幸的是,它看起来像情节样式(在kind参数后面列出)没有点。 我可以使用线条或条纹,甚至可以使用密度而不是点数。 有没有办法可以帮助解决这个问题。
我开始学习pandas,并试图find最艰难的(或pandasthonic?)方式来完成某些任务。 假设我们有一个DataFrame,列A,B和C. 列A包含布尔值:每行的A值为true或false。 B列有一些我们想要绘制的重要值。 我们想要发现的是,将A设置为false的行的B值之间的细微差别与具有A的行的B值是正确的。 换句话说, 我怎样才能根据列A的值(true或false)进行分组,然后在同一个图上绘制两个组的列B的值? 这两个数据集应该有不同的颜色,以便能够区分这些点。 接下来,让我们给这个程序增加一个特性:在绘图之前,我们要为每一行计算另一个值并将其存储在D列中。这个值是logging之前整个五分钟内存储在B中的所有数据的平均值 – 但我们只包含存储在A中的具有相同布尔值的行 换句话说, 如果我有一行,其中A=True , time=t ,我想计算D列的值,它是从时间t-5到t所有logging的B的均值,它们具有相同的A=True 。 在这种情况下,我们怎样才能在A的值上执行groupby,然后将这个计算应用到每个单独的组,然后绘制这两个组的D值?
我想元素智能的OR运算符。 我知道“或”本身不是我正在寻找的东西。 对于我想要使用&在这里解释。 对于不是,我想要使用np.invert() 这里解释。 那么OR的等价物是什么?
我正在使用Pandas包,它创build一个DataFrame对象,它基本上是一个标记的matrix。 通常我有长string字段的列,或者多列数据框,所以简单的打印命令不能正常工作。 我已经写了一些文本输出function,但它们不是很好。 我真正喜欢的是一个简单的GUI,它可以让我与数据框/matrix/表进行交互。 就像你会在SQL工具中find的一样。 基本上是一个窗口,有一个只读的电子表格,像查看数据。 我可以通过长桌子等来扩大栏目,上下翻页 我怀疑像这样的东西存在,但我必须用错误的词汇Googlesearch。 如果它是pandas的具体情况会很好,但我想我可以使用任何matrix接受工具。 (顺便说一句 – 我在Windows上) 任何指针? 或者,相反,如果有人知道这个空间,并知道这可能不存在,任何build议是否有一个简单的GUI框架/小部件,我可以用我自己的? (但是由于我的需求是有限的,我不愿意学习一个大的GUI框架,并为这一块做一堆编码。)
我有一个非常大的数据框(大约100万行),来自一个实验(60个受访者)的数据。 我想将dataframe分成60个dataframe(每个参与者的dataframe)。 在数据框(叫做= data)中有一个名为'name'的variables,它是每个参与者的唯一代码。 我已经尝试了以下,但没有发生(或一小时内不停止)。 我打算做的是将数据框(数据)拆分成更小的数据框,并将其附加到列表(datalist)中: import pandas as pd def splitframe(data, name='name'): n = data[name][0] df = pd.DataFrame(columns=data.columns) datalist = [] for i in range(len(data)): if data[name][i] == n: df = df.append(data.iloc[i]) else: datalist.append(df) df = pd.DataFrame(columns=data.columns) n = data[name][i] df = df.append(data.iloc[i]) return datalist 我没有收到错误信息,脚本似乎永远运行! 有一个聪明的方法来做到这一点?