【跟着stackoverflow学Pandas】--Converting a Pandas GroupBy object to DataFrame-Groupby对象转换为DataFrame

来源:互联网 发布:汉语拼音注音软件 编辑:程序博客网 时间:2024/05/17 17:44

最近做一个系列博客,跟着stackoverflow学Pandas。

专栏地址:http://blog.csdn.net/column/details/16726.html

以 pandas作为关键词,在stackoverflow中进行搜索,随后安照 votes 数目进行排序:
https://stackoverflow.com/questions/tagged/pandas?sort=votes&pageSize=15

Converting a Pandas GroupBy object to DataFrame-Groupby对象转换为DataFrame

split-apply-combine

我们在对数据进行清洗时,经常要用到split-apply-combine,首先对数据按照一定的标准进行split(分组),然后对每组数据进行apply(处理),最后把结果combine(合并),在这一系列操作中就必须要用到 pandas的groupby函数。
具体可以参考官方文档:

https://pandas.pydata.org/pandas-docs/stable/groupby.html

很多时候,GroupBy 对象不方便我们下一步操作,我们喜欢把他转化为DataFrame。下面介绍几种常用的方法。

参考:

https://stackoverflow.com/questions/10373660/converting-a-pandas-groupby-object-to-dataframe

转换

import pandas as pdprint(pd.__version__)# 0.20.3df1 = pd.DataFrame({"Name":["Alice", "Bob", "Mallory", "Mallory", "Bob" , "Mallory"],                    "City":["Seattle","Seattle","Portland","Seattle","Seattle","Portland"]})df1##       City     Name#0   Seattle    Alice#1   Seattle      Bob#2  Portland  Mallory#3   Seattle  Mallory#4   Seattle      Bob#5  Portland  Mallory#g1 = df1.groupby(["Name", 'City']).size() g1# Name     City    # Alice    Seattle     1# Bob      Seattle     2# Mallory  Portland    2#          Seattle     1# 如果要使用count,必须这样df1.groupby(["Name", "City"])[['Name','City']].count()#             Name  City# Name  City        # Alice Seattle 1   1# Bob   Seattle 2   2# Mallory   Portland    2   2#          Seattle  1   1

此时得到的g1数据已经是DataFrame格式, 但是属于MultiIndex, 如果想得到方方正正的DataFrame格式,可以采用 reset_index()函数。

type(g1)# pandas.core.frame.DataFrameg1.index# MultiIndex(levels=[['Alice', 'Bob', 'Mallory'], ['Portland', 'Seattle']],#            labels=[[0, 1, 2, 2], [1, 1, 0, 1]],#            names=['Name', 'City'])g1.reset_index()print(g1.reset_index())#       Name      City  0# 0    Alice   Seattle  1# 1      Bob   Seattle  2# 2  Mallory  Portland  2# 3  Mallory   Seattle  1

count和size的区别

这里出现的count和size的区别,如果想深究可以参考:
size 是考虑 NaN的计数,而 count 则不考虑。

https://stackoverflow.com/documentation/pandas/1822/grouping-data/6874/aggregating-by-size-and-count#t=201607220906502658034

阅读全文
1 0
原创粉丝点击