《利用Python进行数据分析》 10.4 数据透视表与交叉表

10.4.1 数据透视表


1.数据透视表简介

        数据透视表是电子表格程序和其他数据分析软件中常见的数据汇总工具。它根据一个或多个键聚合一张表的数据,将数据在矩形格式中排列,其中一些分组键是沿着行的,另一些是沿着列的。

        Python中的pandas透视表是通过groupby工具以及使用分层索引的重塑操作实现的

        DataFrame拥有一个pivot_table方法,并且还有一个顶层的pandas.pivot_table函数。除了为groupby提供一个方便接口,pivot_table还可以添加部分总计,也称作边距。

示例:小费数据集操作

操作1:做计算一张在行方向上按day和smoker排列的分组平均值(默认的pivot_table聚合类型)的表(见图10-1)

源文件请查看链接:小费源文件

图10-1:操作一

操作2:在tip_pct和size上进行聚合,并根据time分组。将把smoker放入表的列,而将day放入表的行(见图10-2)

图10-2:操作2


操作3:传递margins=True来扩充这个表来包含部分总计(见图10-3)

图10-3:操作3

注:自动添加All行和列标签,其中相应的值是单层中所有数据的分组统计值

All的值是均值,且该均值是不考虑吸烟者与非吸烟者(All列)或行分组中任何两级的(All行)


操作4:将函数传递给aggfunc使用不同的聚合函数,利用'count’或者len将给出一张分组大小的交叉表(计数或出现频率)(见图10-4)

图10-4:操作4


操作5:传递fill_value填充产生的空值(见图10-5)

图10-5:操作5

10.1.2 数据交叉表


1.交叉表简介

交叉表(简写为crosstab)是数据透视表的一个特殊情况,计算的是分组中的频率

示例1:不同民族惯用手分析(见图10-6)

使用pivot_table或pandas.crosstable函数来按照国籍和惯用型来总结数据

图10-6:示例1

注:(1)pandas.read_table(filepath_or_buffer,sep='\t',delimiter=None,header='infer',names=None, index_col=None,usecols=None,squeeze=False,prefix=None,mangle_dupe_cols=True, dtype=None,engine=None,converters=None,true_values=None,false_values=None, skipinitialspace=False,skiprows=None,nrows=None,na_values=None,keep_default_na=True, na_filter=True,verbose=False,skip_blank_lines=True,parse_dates=False, infer_datetime_format=False,keep_date_col=False,date_parser=None,dayfirst=False, iterator=False,chunksize=None,compression='infer',thousands=None,decimal=b'.', lineterminator=None,quotechar='"',quoting=0,escapechar=None,comment=None, encoding=None,dialect=None,tupleize_cols=False,error_bad_lines=True,warn_bad_lines=True, skipfooter=0,skip_footer=0,doublequote=True,delim_whitespace=False,as_recarray=False, compact_ints=False,use_unsigned=False,low_memory=True,buffer_lines=None, memory_map=False,float_precision=None)

Read general delimited file into DataFrame

Also supports optionally iterating or breaking of the file

into chunks.

Additional help can be found in theonline docs for IO Tools.

(2)pandas.crosstab(index,columns,values=None,rownames=None,colnames=None,

      aggfunc=None,margins=False,margins_name='All',dropna=True,normalize=False)

Compute a simple cross-tabulation of two (or more) factors. By default

computes a frequency table of the factors unless an array of values and an

aggregation function are passed


图10-6(2):示例1

:crosstab的前两个参数可是数组、Series或数组的列表

示例2:回到之前上一数据透视表研究的小费数据集,在小费数据集中操作(见图10-7)

图10-7:示例2

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容