python pandas交叉表,透视表
python pandas交叉表,透视表对于处理数据来说非常方便,学习笔记总结如下:#!/usr/bin/python-- coding:utf-8 --from future import divisionimport pandas as pdimport numpy as npimportsysimport math# reload(sys)sys.setdefaultencoding( "u
·
python pandas交叉表,透视表对于处理数据来说非常方便,学习笔记总结如下:
#!/usr/bin/python
-- coding:utf-8 --
from future import division
import pandas as pd
import numpy as np
import sys
import math
# reload(sys)
sys.setdefaultencoding( "utf-8" ) #解决字符编码报错
#pandas读文件
df = pd.read_csv('/home/hp/Desktop/James_Harden.csv',encoding='utf8')
df.tail()
print (df)
'''
对手 胜负 主客场 命中 投篮数 投篮命中率 3分命中率 篮板 助攻 得分
0 勇士 胜 客 10 23 0.435 0.444 6 11 27
1 国王 胜 客 8 21 0.381 0.286 3 9 27
2 小牛 胜 主 10 19 0.526 0.462 3 7 29
3 灰熊 负 主 8 20 0.400 0.250 5 8 22
4 76人 胜 客 10 20 0.500 0.250 3 13 27
5 黄蜂 胜 客 8 18 0.444 0.400 10 11 27
6 灰熊 负 客 6 19 0.316 0.222 4 8 20
7 76人 负 主 8 21 0.381 0.429 4 7 29
'''
#透视表
print (df.pivot_table([u'得分'],index=[u'对手',u'胜负',u'主客场']))#value即是要聚合的列,index
'''
得分
对手 胜负 主客场
76人 胜 客 27
负 主 29
勇士 胜 客 27
国王 胜 客 27
太阳 胜 客 48
小牛 胜 主 29
尼克斯 胜 主 37
客 31
开拓者 胜 客 48
掘金 胜 主 21
步行者 胜 主 29
客 26'''
print (df.pivot_table([u'得分'],index=[u'主客场',u'对手',u'胜负']))
'''
得分
主客场 对手 胜负
主 76人 负 29
小牛 胜 29
尼克斯 胜 37
掘金 胜 21
步行者 胜 29
灰熊 胜 38
负 22
爵士 胜 56
猛龙 负 38
篮网 胜 37
骑士 胜 35
鹈鹕 胜 26
客 76人 胜 27
勇士 胜 27
国王 胜 27
太阳 胜 48
尼克斯 胜 31
开拓者 胜 48
步行者 胜 26
湖人 胜 36
灰熊 胜 29
负 20
爵士 胜 29
老鹰 胜 29
黄蜂 胜 27'''
print (df.pivot_table([u'得分'],index=[u'胜负',u'主客场',u'对手']))
'''
得分
胜负 主客场 对手
胜 主 小牛 29
尼克斯 37
掘金 21
步行者 29
灰熊 38
爵士 56
篮网 37
骑士 35
鹈鹕 26
客 76人 27
勇士 27
国王 27
太阳 48
尼克斯 31
开拓者 48
步行者 26
湖人 36
灰熊 29
爵士 29
老鹰 29
黄蜂 27
负 主 76人 29
灰熊 22
猛龙 38
客 灰熊 20'''
print (df.pivot_table([u'得分'],index=[u'胜负',u'主客场'],columns=[u'对手'],fill_value=0,margins=1))
'''
得分
对手 76人 勇士 国王 太阳 小牛 尼克斯 开拓者 掘金 步行者 湖人 灰熊 爵士 猛龙 篮网 老鹰 骑士 鹈鹕 黄蜂 All
胜负 主客场
胜 主 0 0 0 0 29 37 0 21 29 0 38 56 0 37 0 35 26 0 34.222222
客 27 27 27 48 0 31 48 0 26 36 29 29 0 0 29 0 0 27 32.000000
负 主 29 0 0 0 0 0 0 0 0 0 22 0 38 0 0 0 0 0 29.666667
客 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 0 0 20.000000
All 28 27 27 48 29 34 48 21 27 36 27 42 38 37 29 35 26 27 32.040000'''
print (pd.pivot_table(df,index=[u'对手',u'胜负'],columns=[u'主客场'],values=[u'得分',u'助攻',u'篮板'],aggfunc=[np.mean],fill_value=0))
'''
mean
助攻 得分 篮板
主客场 主 客 主 客 主 客
对手 胜负
76人 胜 0 13 0 27 0 3
负 7 0 29 0 4 0
勇士 胜 0 11 0 27 0 6
国王 胜 0 9 0 27 0 3
太阳 胜 0 7 0 48 0 2
小牛 胜 7 0 29 0 3 0
尼克斯 胜 10 9 37 31 2 5
开拓者 胜 0 3 0 48 0 8
掘金 胜 9 0 21 0 8 0
步行者 胜 10 15 29 26 8 5
湖人 胜 0 9 0 36 0 4
灰熊 胜 8 7 38 29 4 5
负 8 8 22 20 5 4
爵士 胜 13 3 56 29 2 5
猛龙 负 11 0 38 0 6 0
篮网 胜 8 0 37 0 10 0
老鹰 胜 0 11 0 29 0 3
骑士 胜 13 0 35 0 11 0
鹈鹕 胜 17 0 26 0 1 0
黄蜂 胜 0 11 0 27 0 10
'''
print df.pivot_table([u'得分'],index=[u'对手',u'胜负'],aggfunc=(sorted(np.array(df[u'得分']),reverse=True)))
print (sorted(np.array(df[u'得分']),reverse=True))
'''
[56, 48, 48, 38, 38, 37, 37, 36, 35, 31, 29, 29, 29, 29, 29, 29, 27, 27, 27, 27, 26, 26, 22, 21, 20]'''
print (df.groupby(u'胜负').count())#统计胜负
'''
对手 主客场 命中 投篮数 投篮命中率 3分命中率 篮板 助攻 得分
胜负
胜 21 21 21 21 21 21 21 21 21
负 4 4 4 4 4 4 4 4 4'''
print (df.groupby(u'主客场').count())#统计主客场
'''
对手 胜负 命中 投篮数 投篮命中率 3分命中率 篮板 助攻 得分
主客场
主 12 12 12 12 12 12 12 12 12
客 13 13 13 13 13 13 13 13 13'''
print (df.describe())
''' 命中 投篮数 投篮命中率 3分命中率 篮板 助攻 得分
count 25.000000 25.000000 25.00000 25.000000 25.000000 25.000000 25.000000
mean 9.800000 21.160000 0.46116 0.406640 5.080000 9.480000 32.040000
std 3.013857 3.350124 0.10404 0.153846 2.722132 3.241913 8.724869
min 6.000000 15.000000 0.31600 0.143000 1.000000 3.000000 20.000000
25% 8.000000 19.000000 0.38100 0.286000 3.000000 8.000000 27.000000
50% 9.000000 21.000000 0.44000 0.400000 5.000000 9.000000 29.000000
75% 11.000000 23.000000 0.52600 0.462000 6.000000 11.000000 37.000000
max 19.000000 29.000000 0.76000 0.875000 11.000000 17.000000 56.000000'''
#groupby,value_count
v = pd.Series(df[u'胜负'])
print (pd.Series(df[u'胜负']).unique())
print (pd.Series(df[u'胜负']).count())
print (pd.Series(df[u'胜负']).value_counts(u'胜'))#百分比 即胜率
print (pd.Series(df[u'胜负']).value_counts())
print (pd.Series(df[u'主客场']).value_counts())
print (df.groupby(u'对手').count())
print (pd.pivot_table(df,index=[u'对手'],columns=[u'胜负'],aggfunc=len,values=[u'得分'] ,margins=True,fill_value=0))#几胜几负
''' 得分
胜负 胜 负 All
对手
76人 1 1 2
勇士 1 0 1
国王 1 0 1
太阳 1 0 1
小牛 1 0 1
尼克斯 2 0 2
开拓者 1 0 1
掘金 1 0 1
步行者 2 0 2
湖人 1 0 1'''
print (pd.pivot_table(df,index=[u'对手'],columns=[u'主客场'],aggfunc=len,values=[u'得分'] ,margins=True,fill_value=0))#几个主场,几个客场,len个数,相当于对value的count
'''
得分
主客场 主 客 All
对手
76人 1 1 2
勇士 0 1 1
国王 0 1 1
太阳 0 1 1
小牛 1 0 1
尼克斯 1 1 2
开拓者 0 1 1
掘金 1 0 1
步行者 1 1 2
湖人 0 1 1
灰熊 2 2 4
爵士 1 1 2'''
print (pd.pivot_table(df,index=[u'对手'],columns=[u'主客场'],values=[u'得分'] ,margins=True,fill_value=0))#主场客场各得多少分
'''
得分
主客场 主 客 All
对手
76人 29 27.000000 28.00
勇士 0 27.000000 27.00
国王 0 27.000000 27.00
太阳 0 48.000000 48.00
小牛 29 0.000000 29.00
尼克斯 37 31.000000 34.00
开拓者 0 48.000000 48.00
掘金 21 0.000000 21.00
步行者 29 26.000000 27.50'''
print (pd.pivot_table(df,index=[u'对手'],aggfunc=[np.mean,sum],values=[u'得分']))#平均得分,总得分
'''
得分 得分
对手
76人 28.00 56
勇士 27.00 27
国王 27.00 27
太阳 48.00 48
小牛 29.00 29
尼克斯 34.00 68
开拓者 48.00 48
掘金 21.00 21
步行者 27.50 55
湖人 36.00 36
灰熊 27.25 109'''
print (pd.pivot_table(df,index=[u'主客场'],columns=[u'胜负'],aggfunc=len,values=[u'得分'],margins=True))#主场客场各几场胜负)
'''
得分
胜负 胜 负 All
主客场
主 9 3 12
客 12 1 13'''
t1 = pd.pivot_table(df,index=[u'主客场'],columns=[u'胜负'],aggfunc=len,values=[u'得分'],margins=True)#主场客场各几场胜负)
print (t1.describe())
print (t1.columns)
print (t1.index)
#交叉表(交叉并聚合)
print (pd.crosstab(df[u'主客场'],df[u'胜负'],margins=True))
'''
胜负 胜 负 All
主客场
主 9 3 12
客 12 1 13
All 21 4 25'''
t2 = pd.crosstab(df[u'主客场'],df[u'胜负'],margins=True)
print (t2.columns)
print (t2.index)
'''
Index([u'胜', u'负', u'All'], dtype='object', name=u'胜负')
Index([u'主', u'客', u'All'], dtype='object', name=u'主客场')
'''
print (t2.loc[u'主'][u'胜'])
print (t2.loc[u'主'][u'All'])
'''
9
12
'''
print ("主场胜率为 %.2f%%") %((t2.loc[u'主'][u'胜'])/(t2.loc[u'主'][u'All'])*100)
print (pd.crosstab([df[u'对手'],df[u'主客场']],df[u'胜负'],margins=True))
'''
胜负 胜 负 All
对手 主客场
76人 主 0 1 1
客 1 0 1
勇士 客 1 0 1
国王 客 1 0 1
太阳 客 1 0 1
小牛 主 1 0 1
尼克斯 主 1 0 1
客 1 0 1
开拓者 客 1 0 1
掘金 主 1 0 1
步行者 主 1 0 1
客 1 0 1
湖人 客 1 0 1
灰熊 主 1 1 2
客 1 1 2
爵士 主 1 0 1
客 1 0 1
猛龙 主 0 1 1
篮网 主 1 0 1
老鹰 客 1 0 1
骑士 主 1 0 1
鹈鹕 主 1 0 1
黄蜂 客 1 0 1
All 21 4 25'''
'''
python3.5软连2.7报错
升级pip
升级numpy
升级pandas
'''
更多推荐
已为社区贡献2条内容
所有评论(0)