python数据透视表(pivot_table参数详解)46
python数据透视表
当一个非常大的表格的数据需要以非常复杂的方式进行汇总以使其易于理解时,数据透视表是一个明智的选择。数据透视表可以基于各种统计概念,如总和、平均值等。为了从 Pandas 的角度设计这些数据透视表,可以使用 Pandas 库中的 pivot_table() 方法。
语法:
pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=False)
pivot_table参数详解:
参数: | values :要汇总的列,可选
index : column,Grouper,array或上一个list 如果传递数组,则其长度必须与数据长度相同。 该列表可以包含任何其他类型(列表除外)。 在pivot table索引上进行分组的键。 如果传递了数组,则其使用方式与列值相同。 columns : column,Grouper,array或上一个list 如果传递数组,则其长度必须与数据长度相同。 该列表可以包含任何其他类型(列表除外)。 在pivot table列上进行分组的键。如果传递了数组, 则其使用方式与列值相同。 aggfunc :函数,函数列表,字典,默认 如果传递了函数列表, 则生成的pivot table将具有层次结构列, 其顶层是函数名称(从函数对象本身推论得出)。 如果传递了dict,则键为要汇总的列, 值是函数或函数列表。 fill_value : 用于替换缺失值的值。 margins : 添加所有行/列(例如,小计/总计)。 dropna : 不要包括所有条目均为NaN的列。 margins_name : 当 observed : 仅当任何 groupers是分类者时才适用。 如果为 如果为 在版本0.25.0中进行了更改。 |
返回值: | DataFrame
Excel样式的pivot table. |
例子
以下是下面提到的以下示例
示例#1
代码:
import pandas as pd
import numpy as np
Core_Dataframe = pd.DataFrame({'Emp_No' : ['Emp1','Emp2','Emp3','Emp4'],
'Employee_Name' : ['Arun', 'selva', 'rakesh', 'arjith'],
'Employee_dept' : ['CAD', 'CAD', 'DEV', 'CAD']})
print(" THE CORE DATAFRAME ")
print(Core_Dataframe)
print("")
table_Dataframe = Core_Dataframe.pivot_table(Core_Dataframe, index=[ 'Employee_dept', 'Emp_No'],columns=['Employee_dept'], aggfunc=np.sum)
print(" THE PIVOT TABLE DATAFRAME ")
print(table_Dataframe)
输出:
说明: 我们可以注意到,在这个实例中,DataFrame 包含员工编号、员工姓名和员工部门等详细信息。生成的数据透视表打印到控制台。
示例#2
代码:
import pandas as pd
import numpy as np
Core_Dataframe = pd.DataFrame({'A' : [ 1, 6, 11, 15, 21, 26],
'B' : [21, 71, 12, 17, 22, 27],
'C' : [3, 8, 13, 18, 23, 28],
'D' : [4, 9, 14, 19, 24, 29],
'E' : [5, 10, 15, 20, 25, 30]})
print(" THE CORE DATAFRAME ")
print(Core_Dataframe)
print("")
table_Dataframe = Core_Dataframe.pivot_table(Core_Dataframe, index=[ 'A', 'B'],columns=['C'], aggfunc=np.sum)
print(" THE PIVOT TABLE DATAFRAME ")
print(table_Dataframe)
输出:
示例#3
代码:
import pandas as pd
import numpy as np
Core_Dataframe = pd.DataFrame( {
'name': ['Alan Xavier', 'Annabella', 'Janawong', 'Yistien', 'Robin sheperd', 'Amala paul', 'Nori'],
'city': ['california', 'Toronto', 'Osaka', 'Shanghai',
'Manchester', 'california', 'Osaka'],
'age': [51, 38, 23, 63, 18, 51, 63],
'py-score': [82.0, 73.0, 81.0, 30.0, 48.0, 61.0, 84.0] })
print(" THE CORE DATAFRAME ")
print(Core_Dataframe)
print("")
table_Dataframe = Core_Dataframe.pivot_table(Core_Dataframe, index=[ 'city' ],columns=['name' , 'py-score'], aggfunc=np.sum)
print(" THE PIVOT TABLE DATAFRAME ")
print(table_Dataframe)
输出:
说明: DataFrame 包含随机人员信息和这些人的 py_score 值。此DataFrame 中使用的关键列是名称、年龄、城市和 py-score 值。iterrows() 函数提供了对DataFrame 的这些行进行复杂迭代的灵活性。生成的数据透视表打印到控制台上。
示例 #4
代码:
import pandas as pd
import numpy as np
import pandas as pd
Core_Dataframe = pd.DataFrame({'Column1' : [ 'A', 'B', 'C', 'D', 'E', 'F'],
'Column2' : [ 'G', 'H', 'I', 'J', 'K', 'L'],
'Column3' : [ 'M', 'N', 'O', 'P', 'Q', 'R'],
'Column4' : [ 'S', 'T', 'U', 'V', 'W', 'X'],
'Column5' : [ 'Y', 'Z', None, None, None, None]})
print(" THE CORE DATAFRAME ")
print(Core_Dataframe)
print("")
table_Dataframe = Core_Dataframe.pivot_table(Core_Dataframe, index=[ 'Column5' ],columns=['Column1' ], aggfunc=np.sum)
print(" THE PIVOT TABLE DATAFRAME ")
print(table_Dataframe)
输出:
示例#5
代码:
import pandas as pd
import numpy as np
import pandas as pd
Core_Dataframe = pd.DataFrame({'A' : [ 3.67, 6.66, 14.5, 13.4, 21.44, 10.344],
'B' : [ 2.345, 745.5, 12.4, 13.4, 22.35, 10.344 ],
'C' : [ 3.67, 8, 13.4, 18, 23, 28.44 ],
'D' : [ 4.6788, 923.3, 14.5, 19, 24, 29.44 ],
'E' : [ 5.3, 10.344, 15.556, 13.45, 10.344, 30.3 ]})
print(" THE CORE DATAFRAME ")
print(Core_Dataframe)
print("")
table_Dataframe = Core_Dataframe.pivot_table(Core_Dataframe, index=[ 'A' ],columns=['B' , 'C' ], aggfunc=np.sum)
print(" THE PIVOT TABLE DATAFRAME ")
print(table_Dataframe)
输出:
说明: 本例中使用了典型的浮动数据集。生成的数据透视表打印到控制台上。
总结
这是 Pandas pivot_table() 的指南。在这里,我们讨论 Python数据透视表 的介绍以及编程示例,和pivot_table参数详解,以便更好地理解。
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!