QianYanDai 2019-12-22
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
透视表就是将指定原有DataFrame的列分别作为行索引和列索引,然后对指定的列应用聚集函数(默认情况下式mean函数)。
df = DataFrame({‘类别‘:[‘水果‘,‘水果‘,‘水果‘,‘蔬菜‘,‘蔬菜‘,‘肉类‘,‘肉类‘],
                ‘产地‘:[‘美国‘,‘中国‘,‘中国‘,‘中国‘,‘新西兰‘,‘新西兰‘,‘美国‘],
                ‘水果‘:[‘苹果‘,‘梨‘,‘草莓‘,‘番茄‘,‘黄瓜‘,‘羊肉‘,‘牛肉‘],
               ‘数量‘:[5,5,9,3,2,10,8],
               ‘价格‘:[5,5,10,3,3,13,20]})
print(df)产地 价格 数量 水果 类别 美国 5 5 苹果 水果 中国 5 5 梨 水果 中国 10 9 草莓 水果 中国 3 3 番茄 蔬菜 新西兰 3 2 黄瓜 蔬菜 新西兰 13 10 羊肉 肉类 美国 20 8 牛肉 肉类
print(df.pivot_table(index=[‘产地‘,‘类别‘]))
          价格    数量
产地  类别            
中国  水果   7.5   7.0
    蔬菜   3.0   3.0
新西兰 肉类  13.0  10.0
    蔬菜   3.0   2.0
美国  水果   5.0   5.0
    肉类  20.0   8.0
print(df.pivot_table(columns=[‘产地‘,‘类别‘]))
    产地   类别
价格  中国   水果     7.5
         蔬菜     3.0
    新西兰  肉类    13.0
         蔬菜     3.0
    美国   水果     5.0
         肉类    20.0
数量  中国   水果     7.0
         蔬菜     3.0
    新西兰  肉类    10.0
         蔬菜     2.0
    美国   水果     5.0
         肉类     8.0
dtype: float64
————————————————print(df.pivot_table(‘价格‘,index=‘产地‘,columns=‘类别‘,aggfunc=‘max‘,margins=True,fill_value=0)) 类别 水果 肉类 蔬菜 All 产地 中国 10.0 0.0 3.0 10.0 新西兰 0.0 13.0 3.0 13.0 美国 5.0 20.0 0.0 20.0 All 10.0 20.0 3.0 20.0
交叉表是用于统计分组频率的特殊透视表
print(pd.crosstab(df[‘类别‘],df[‘产地‘],margins=True)) # 按类别分组,统计各个分组中产地的频数 产地 中国 新西兰 美国 All 类别 水果 2 0 1 3 肉类 0 1 1 2 蔬菜 1 1 0 2 All 3 2 2 7
计算的时候总共分3步,1到2是第二组......lower: i. 这组数据中的小值 higher: j. 这组数据中的大值,fraction 是第三步中的小数部分,意思是当前这组数据的0到1的分位数
Series是一种类似于一维数组的对象,由一组数据以及一组与之对应的索引组成。 index: 索引序列,必须是唯一的,且与数据的长度相同. 如果没有传入索引参数,则默认会自动创建一个从0~N的整数索引