我经常使用用过的pandas agg()
函数来对data.frame的每一列运行汇总统计.例如,以下是产生均值和标准差的方法:
df = pd.DataFrame({'A': ['group1', 'group1', 'group2', 'group2', 'group3', 'group3'],
'B': [10, 12, 10, 25, 10, 12],
'C': [100, 102, 100, 250, 100, 102]})
>>> df
[output]
A B C
0 group1 10 100
1 group1 12 102
2 group2 10 100
3 group2 25 250
4 group3 10 100
5 group3 12 102
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,将各行发送到agg函数的顺序无关紧要.但请考虑以下示例,其中:
df.groupby('A').agg([np.mean, lambda x: x.iloc[1] ])
[output]
mean <lambda> mean <lambda>
A
group1 11.0 12 101 102
group2 17.5 25 175 250
group3 11.0 …
Run Code Online (Sandbox Code Playgroud) 我正在努力弄清楚如何为pandas的dataframe.agg()
功能组合两种不同的语法.拿这个简单的数据框:
df = pd.DataFrame({'A': ['group1', 'group1', 'group2', 'group2', 'group3', 'group3'],
'B': [10, 12, 10, 25, 10, 12],
'C': [100, 102, 100, 250, 100, 102]})
>>> df
[output]
A B C
0 group1 10 100
1 group1 12 102
2 group2 10 100
3 group2 25 250
4 group3 10 100
5 group3 12 102
Run Code Online (Sandbox Code Playgroud)
我知道你可以发送两个函数agg()
并获得一个新的数据框,其中每个函数都应用于每一列:
df.groupby('A').agg([np.mean, np.std])
[output]
B C
mean std mean std
A
group1 11.0 1.414214 101 1.414214
group2 17.5 10.606602 175 106.066017
group3 …
Run Code Online (Sandbox Code Playgroud) 我试图了解matplotlib的状态机模型,但是在尝试在单个绘图上绘制多条线时遇到错误.根据我的理解,下面的代码应该生成一个包含两行的图:
import pandas as pd
import pandas.io.data as web
aapl = web.get_data_yahoo('AAPL', '1/1/2005')
# extract adjusted close
adj_close = aapl.loc[:, ['Adj Close']]
# 2 lines on one plot
hold(False)
adj_close.resample('M', how='min').plot()
adj_close.resample('M', how='max').plot()
Run Code Online (Sandbox Code Playgroud)
事实上,我得到三个数字:首先是空白数字,然后是两个数字,每个数字一行.
知道我做错了什么或我的系统上的设置可能配置错误了吗?