Questions tagged «pandas»

Pandas是用于数据处理和分析的Python库,例如,在统计,实验科学结果,计量经济学或金融学中常见的数据框,多维时间序列和横截面数据集。Pandas是Python中主要的数据科学库之一。


1
熊猫的concat函数中的“级别”,“键”和名称参数是什么?
问题 如何使用pd.concat? 什么是levels对的说法? 什么是keys对的说法? 有大量示例可以帮助解释如何使用所有参数吗? 熊猫的concat职能是合并后的公用事业公司的瑞士军刀。有用的情况多种多样。现有文档在一些可选参数上省略了一些细节。其中有levels和keys参数。我着手弄清楚这些论点的作用。 我将提出一个问题,将其作为的许多方面的门户pd.concat。 考虑数据帧d1,d2以及d3: import pandas as pd d1 = pd.DataFrame(dict(A=.1, B=.2, C=.3), [2, 3]) d2 = pd.DataFrame(dict(B=.4, C=.5, D=.6), [1, 2]) d3 = pd.DataFrame(dict(A=.7, B=.8, D=.9), [1, 3]) 如果我将这些与 pd.concat([d1, d2, d3], keys=['d1', 'd2', 'd3']) pandas.MultiIndex对于我的columns对象,我得到了预期的结果: A B C D d1 2 0.1 0.2 0.3 …
93 python  pandas 

6
使垂直网格线出现在matplotlib中的线图中
我想在绘图上同时获得水平和垂直网格线,但是默认情况下仅显示水平网格线。我正在使用pandas.DataFramepython中的sql查询中的a来生成在x轴上具有日期的折线图。我不确定为什么它们没有出现在日期上,我试图寻找答案,但是找不到答案。 我仅用来绘制图形的就是下面的简单代码。 data.plot() grid('on') data是DataFrame,其中包含日期和来自sql查询的数据。 我也尝试过添加下面的代码,但是我仍然得到相同的输出,但没有垂直网格线。 ax = plt.axes() ax.yaxis.grid() # horizontal lines ax.xaxis.grid() # vertical lines 有什么建议?

6
熊猫Groupby累积总和
我想向我的Pandas数据框添加一个累加和列,以便: name | day | no -----|-----------|---- Jack | Monday | 10 Jack | Tuesday | 20 Jack | Tuesday | 10 Jack | Wednesday | 50 Jill | Monday | 40 Jill | Wednesday | 110 变成: Jack | Monday | 10 | 10 Jack | Tuesday | 30 …
93 python  pandas 

5
在同一图中绘制不同的数据框
我有一个具有多年温度记录的温度文件,格式如下: 2012-04-12,16:13:09,20.6 2012-04-12,17:13:09,20.9 2012-04-12,18:13:09,20.6 2007-05-12,19:13:09,5.4 2007-05-12,20:13:09,20.6 2007-05-12,20:13:09,20.6 2005-08-11,11:13:09,20.6 2005-08-11,11:13:09,17.5 2005-08-13,07:13:09,20.6 2006-04-13,01:13:09,20.6 每年的记录数量和时间不同,因此熊猫的datetimeindices都不同。 我想在同一图中绘制不同年份的数据以进行比较。X轴为1月至12月,Y轴为温度。我应该怎么做呢?

6
如何在Ipython Notebook中的循环中动态更新绘图(在一个单元格内)
环境:Python 2.7,matplotlib 1.3,IPython Notebook 1.1,Linux,Chrome。该代码位于一个输入单元格中,使用--pylab=inline 我想使用IPython笔记本和熊猫消耗流并每5秒动态更新一次绘图。 当我仅使用print语句以文本格式打印数据时,它就可以很好地工作:输出单元格仅保留打印数据并添加新行。但是,当我尝试绘制数据(然后循环更新)时,该绘制永远不会显示在输出单元格中。但是,如果我删除了循环,则只需绘制一次即可。它工作正常。 然后我做了一些简单的测试: i = pd.date_range('2013-1-1',periods=100,freq='s') while True: plot(pd.Series(data=np.random.randn(100), index=i)) #pd.Series(data=np.random.randn(100), index=i).plot() also tried this one time.sleep(5) 在我手动中断该进程(ctrl + m + i)之前,输出不会显示任何内容。在我中断它之后,该图正确显示为多条重叠线。但是我真正想要的是一个显示并每5秒更新一次的图(或者每当plot()调用函数时,就像我上面提到的print语句输出一样,效果很好)。仅在单元格完全完成后显示最终图表不是我想要的。 我什至尝试在每个plot()等之后显式添加draw()函数。它们都不起作用。想知道如何在IPython Notebook中的一个单元格中通过for / while循环动态更新绘图。

6
大熊猫的行程是否有性能问题?
我注意到使用大熊猫的散列时的效果非常差。 这是别人的经历吗?它特定于迭代吗?对于一定大小的数据(我要处理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 为什么矢量化运算之类的应用这么快?我想象那里也必须进行逐行迭代。 我无法弄清楚如何在我的情况下不使用迭代(这将在以后的问题中进行介绍)。因此,如果您一直能够避免这种迭代,不胜感激。我正在基于单独数据框中的数据进行计算。谢谢! ---编辑:下面添加了我要运行的简化版本--- import pandas as pd import …

5
在matplotlib条形图上添加值标签
我陷入一种感觉应该相对容易的事情上。我在下面提供的代码是基于我正在从事的一个较大项目的示例。我没有理由发布所有详细信息,因此请原样接受我带来的数据结构。 基本上,我正在创建一个条形图,并且我可以弄清楚如何在条形图上(在条形图的中心或上方)添加值标签。一直在网上查看示例,但在我自己的代码上实现未成功。我认为解决方案是使用“文本”或“注释”,但是我:a)不知道使用哪个(通常来说,还没有弄清楚何时使用哪个)。b)看不到要显示值标签。感谢您的帮助,下面是我的代码。提前致谢! import numpy as np import pandas as pd import matplotlib.pyplot as plt pd.set_option('display.mpl_style', 'default') %matplotlib inline # Bring some raw data. frequencies = [6, 16, 75, 160, 244, 260, 145, 73, 16, 4, 1] # In my original code I create a series and run on that, # …

2
Python Pandas:按分组分组,平均?
我有一个这样的数据框: cluster org time 1 a 8 1 a 6 2 h 34 1 c 23 2 d 74 3 w 6 我想计算每个集群每个组织的平均时间。 预期结果: cluster mean(time) 1 15 ((8+6)/2+23)/2 2 54 (74+34)/2 3 6 我不知道如何在熊猫中做到这一点,有人可以帮忙吗?
92 python  pandas  group-by  mean 

2
Python Pandas用户警告:正在排序,因为未串联的轴未对齐
我正在做一些代码练习,并在收到用户警告的同时应用数据帧合并 /usr/lib64/python2.7/site-packages/pandas/core/frame.py:6201:FutureWarning:排序是因为未串联的轴未对齐。熊猫的未来版本将更改为默认情况下不排序。要接受将来的行为,请传递“ sort = True”。要保留当前行为并消除警告,请传递sort = False 在这些代码行上:您能帮忙获得此警告的解决方案吗? placement_video = [self.read_sql_vdx_summary, self.read_sql_video_km] placement_video_summary = reduce(lambda left, right: pd.merge(left, right, on='PLACEMENT', sort=False), placement_video) placement_by_video = placement_video_summary.loc[:, ["PLACEMENT", "PLACEMENT_NAME", "COST_TYPE", "PRODUCT", "VIDEONAME", "VIEW0", "VIEW25", "VIEW50", "VIEW75", "VIEW100", "ENG0", "ENG25", "ENG50", "ENG75", "ENG100", "DPE0", "DPE25", "DPE50", "DPE75", "DPE100"]] # print (placement_by_video) placement_by_video["Placement# Name"] …
92 python  pandas 

6
将Pandas Series转换为DataFrame
我有一个熊猫系列科幻小说: email email1@email.com [1.0, 0.0, 0.0] email2@email.com [2.0, 0.0, 0.0] email3@email.com [1.0, 0.0, 0.0] email4@email.com [4.0, 0.0, 0.0] email5@email.com [1.0, 0.0, 3.0] email6@email.com [1.0, 5.0, 0.0] 我想将其转换为以下DataFrame: index | email | list _____________________________________________ 0 | email1@email.com | [1.0, 0.0, 0.0] 1 | email2@email.com | [2.0, 0.0, 0.0] 2 | email3@email.com …

11
将数据框拆分为多个数据框
我有一个非常大的数据框(大约一百万行),其中包含来自实验的数据(60位受访者)。 我想将数据框分成60个数据框(每个参与者一个数据框)。 在数据框中,data有一个名为的变量'name',它是每个参与者的唯一代码。 我已经尝试了以下方法,但是没有任何反应(或者执行不会在一小时内停止)。我打算做的是将其拆分data为较小的数据框,并将其附加到列表(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 我没有收到错误消息,该脚本似乎可以永远运行! 有什么聪明的方法吗?


2
熊猫Groupby价值范围
大熊猫中是否有一种简单的方法可以groupby按一定范围的值增量进行调用?例如下面给出的示例,我可以B以0.155增量方式对列进行分组和分组,以便例如将列B中的前几对分组划分为'0-0.155、0.155-0.31 ...之间的范围。 import numpy as np import pandas as pd df=pd.DataFrame({'A':np.random.random(20),'B':np.random.random(20)}) A B 0 0.383493 0.250785 1 0.572949 0.139555 2 0.652391 0.401983 3 0.214145 0.696935 4 0.848551 0.516692 或者,我可以先按这些增量将数据分类到新的列中,然后再使用它groupby来确定在列中可能适用的任何相关统计数据A?

4
使用Pandas groupby连接来自多行的字符串
我想基于Pandas中的groupedby合并数据框中的几个字符串。 到目前为止,这是我的代码: import pandas as pd from io import StringIO data = StringIO(""" "name1","hej","2014-11-01" "name1","du","2014-11-02" "name1","aj","2014-12-01" "name1","oj","2014-12-02" "name2","fin","2014-11-01" "name2","katt","2014-11-02" "name2","mycket","2014-12-01" "name2","lite","2014-12-01" """) # load string as stream into dataframe df = pd.read_csv(data,header=0, names=["name","text","date"],parse_dates=[2]) # add column with month df["month"] = df["date"].apply(lambda x: x.month) 我希望最终结果如下所示: 我不知道如何使用groupby并在“文本”列中应用某种形式的字符串连接。任何帮助表示赞赏!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.