python汇总函数名称 python 数据汇总( 三 )


2)g.get_group('BJ')--得到'BJ'所对应的组
3)groupby = split +apply +combine
g.mean()--求每组的平均值
g.max()--求每组的最大值
g.min()--求每组的最小值
g.count()
g.describe()
4)g是一个可迭代对象,可以用list函数将其转化为list
list(g) --[('组名1',DataFrame1),('组名2',DataFrame2),(),()]
dict(list(g))--将其转化为字典
同时可以通过for循环进行遍历操作:for item,desc in g:print(item,desc)
#怪不得分组后不是DataFrame,因为元组的第一个元素是'分组名' 。
2、按照多列分组
g_new = df.groupby(['city','wind'])
得到生成器((('分组1','分组2'),DataFrame),(),()...)
g_new.get_group(('分组1','分组2'))
for (name_1,name_2),group in g_new:
print((name_1,name_2),group)
g.mean()--求每组的平均值
与g.agg('mean')方法一样
pd.pivot_table(df,index=['',''],aggfuc='sum',values=['',''])
index是分组的组名,values是透视表呈现结果的列,columns是values下的分解
#感觉透视表呈现的结果就是groupby+agg后的结果
#分析者需要对数据结构有一定的了解
df.sort_values(by='',ascending=True/False)[:10]df可以索引
df.value_counts()--按值计数
df.['a'] = df['b'].apply(lambda x:x0)--DataFrame中的True/False
通过g.size()可以看到被groupby之后的数据,得到的是一个Series
1、Series的排序:
1)对值进行排序
Series.sort_values()---直接对Series的值进行排序
2)通过索引进行排序
Series.sort_index()
#默认都是升序排列
2、DataFrame的排序
df.sort_values(by='')--按照某列的顺序进行排序
df['a'].sort_values()--返回对a列数据的排序结果,只返回a列
1、df.index = Series(['a','b','c'])直接对index赋予新值
2、df.index = df.index.map(str.upper)
map函数中只传入新的函数名即可
3、df.rename(index=str.upper,columns=str.lower)
或者传递字典,进行一一转换
pd.merge(df1,df2,on=None,how='left/right/inner/outer')
pd.merge(df1,df2)--没有on参数默认先找相同的columns,然后在columns下找相同的values
pd.merge(df1,df2,on='columns')--on参数是指按照指定列进行merge
left:表示以左边的数据表为基准,进行填充右面的数据
right:表示以右边的数据表为基准 , 填充左边的数据
outer:以on的指定列的所有值为基准,填充两边的数据
inner:默认inner,相同on指定的columns下的相同values对应的左右两边的数据
1、concat拼接
pd.concat([Series1,Series2])
pd.concat([df1,df2])-- 上下叠加,将没有的列进行填充
2、combine组合
Series1.combine_first(Series2)--用Series2的值去填充Series1中为空的值
df1.combine_first(df2)---用df2将df1中的空值填充
df['A'] = df['A'].apply(str.upper)---apply函数中也只输入函数名
len(df)--求df的长度
len(df['a'].unique())--查看a列中不重复数据的多少
Series.duplicated()--返回一列True/False的Series
Series.drop_duplicates()--删除重复值
df.drop_duplicates('a',keep='first/last')
df.drop_duplicates()--删除完全重复的行
参数:'a'表示以a列为基准 , 删除重复值
first表示保留第一个,last表示保留最后一个
data_list = pd.date_range(start,end,period='D',freq)
period='D',以天为单位
freq = 'W' 以周为单位
freq = 'W-Mon'以每周一位单位
freq = '5H'以5h为单位
以data_range作为索引提取数据比较简单
df[datetime(2017,9,1)]
df['2017-09-01']
df['20170901']
df['201709']
对时间序列数据进行分组聚合操作:
s1.resample('M').mean()--以月为单位进行采样,然后求每组的平均值

推荐阅读