利用python/pandas/numpy做数据分析(三)-透视表pivot_table

简介: 透视表,根据一个或多个键进行聚合,并根据行列上的分组键将数据分配到各个矩形区域中.import numpy as npdata=pd.

透视表,根据一个或多个键进行聚合,并根据行列上的分组键将数据分配到各个矩形区域中.

import numpy as np
data=pd.DataFrame(np.arange(6).reshape((2,3)),
                 index=pd.Index(['ohio','color'], name='state'),
                columns=pd.Index(['one','two','three'], name='number')
                            )
data
number one two three
state
ohio 0 1 2
color 3 4 5

前两个参数分别作用于行和列的索引,最后一个参数用于填充dataframe的数据列的列名

data.pivot('one','two')

这里写图片描述

首先,它会设置一个新的索引( set_index() ),然后对索引排序( sort_index() ),最后调用 unstack 。以上的步骤合在一起就是 pivot 。

官方定义:
DataFrame.pivot_table(data, values=None, index=None, columns=None, aggfunc=’mean’, fill_value=None, margins=False, dropna=True, margins_name=’All’)

data: DataFrame对象
values: 显示的列的名字,可以应用aggfunc中的函数
index: 索引
columns: 可选的, 通过额外的方法来分割你所关心的实际值,然而aggfunc被应用到values上, aggfunc默认的是mean


下面来看干货:

打开dat表,分别为users, ratings, movies

import pandas as pd
unames=['user_id','gender','age','occupation','zip']
users=pd.read_table('C:\\Users\\ecaoyng\\Desktop\\work space\\Python\\py_for_analysis\\pydata-book-master\\ch02\\movielens\\users.dat',sep='::',header=None,names=unames)
users.head()

合并三个表:

data=pd.merge(pd.merge(ratings, users),movies)
data[:10]

这里写图片描述

最简单的透视表必须有一个数据帧和一个索引

pd.pivot_table(data, index=['movie_id'])[:10]

这里写图片描述

当然也可以建两个index

pd.pivot_table(data, index=['movie_id','occupation'])

这里写图片描述

pd.pivot_table(data, index=['movie_id','occupation'],values=['rating'])

这里写图片描述

pd.pivot_table(data, index=['movie_id','occupation'],values=['rating'],columns='gender')

这里写图片描述

可以看出和value的区别了吗?colume的值作为列名了。

之后我们要drop掉NAN的数据,

mean_ratings=mean_ratings.dropna(axis=0)
mean_ratings

其中官方dropna函数为DataFrame.dropna(axis=0, how=’any’, thresh=None, subset=None, inplace=False),其中axis : {0 or ‘index’, 1 or ‘columns’}, or tuple/list thereof
Pass tuple or list to drop on multiple axes,即axis=0表示删除行,axis=1表示删除列。
当然,也可以通过fillna将缺失值填充为所需要的。

之后我打算过滤掉评论不足250条的记录,其中size()得到含有各个电影分组大小的serise对象。

ratings_by_title=data.groupby('title').size()
type(ratings_by_title)

这里写图片描述

active_titles=ratings_by_title.index[ratings_by_title >= 250]
active_titles

得到的active_titles 是索引:
这里写图片描述

然后可以在mean_ratings中选择我们所需要的行了

mean_ratings.ix[active_titles][:10]

之后可以对female的评价执行降序排列

top_female_ratings=mean_ratings.sort_values(by='F',ascending=False)

为了观察男女差别最大的电影,可以加一列diff

mean_ratings['diff']=mean_ratings['M']-mean_ratings['F']

对diff进行排序

sorted_by_diff=mean_ratings.sort_values(by='diff')

这里写图片描述

男同志喜爱的电影

sorted_by_diff[::-1][:10]

[::-1] 表示取反

回到小费数据集

tips=pd.read_csv('C:\\Users\\ecaoyng\\Desktop\\work space\\Python\\py_for_analysis_code\\pydata-book-master\\ch08\\tips.csv')
tips[:5]

这里写图片描述

tips.pivot_table(index=['sex','smoker'])

这里写图片描述

tips['tip_pct']=tips['tip']/tips['total_bill']
tips[:6]

这里写图片描述

tips.pivot_table(['tip_pct','size'], index=['sex','day'],columns='smoker')

这里写图片描述

小技巧,先画出正题框架比如 columns 是列索引名, index是行索引名等

这里写图片描述

tips.pivot_table(['tip_pct','size'], index=['sex','day'],columns='smoker',margins=True)

这里写图片描述

tips.pivot_table(['tip_pct'], index=['sex','smoker'],columns='day',margins=True,aggfunc=len)

这里写图片描述

目录
相关文章
|
11天前
|
人工智能 数据可视化 数据挖掘
【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
|
16天前
|
存储 数据挖掘 数据库
【Python】python天气数据抓取与数据分析(源码+论文)【独一无二】
【Python】python天气数据抓取与数据分析(源码+论文)【独一无二】
|
25天前
|
BI 数据处理 索引
Pandas基本操作:Series和DataFrame(Python)
Pandas基本操作:Series和DataFrame(Python)
95 1
|
3天前
|
供应链 搜索推荐 数据挖掘
Pandas实战案例:电商数据分析的实践与挑战
【4月更文挑战第16天】本文通过一个电商数据分析案例展示了Pandas在处理销售数据、用户行为分析及商品销售趋势预测中的应用。在数据准备与清洗阶段,Pandas用于处理缺失值、重复值。接着,通过用户购买行为和商品销售趋势分析,构建用户画像并预测销售趋势。实践中遇到的大数据量和数据多样性挑战,通过分布式计算和数据标准化解决。未来将继续深入研究Pandas与其他先进技术的结合,提升决策支持能力。
|
3天前
|
存储 数据可视化 数据挖掘
实战案例:Pandas在金融数据分析中的应用
【4月更文挑战第16天】本文通过实例展示了Pandas在金融数据分析中的应用。案例中,一家投资机构使用Pandas加载、清洗股票历史价格数据,删除无关列并重命名,将日期设为索引。接着,数据被可视化以观察价格走势,进行基本统计分析了解价格分布,以及计算移动平均线来平滑波动。Pandas的便捷功能在金融数据分析中体现出高效率和实用性。
|
3天前
|
Python 数据挖掘 存储
Python 数据分析(PYDA)第三版(七)(4)
Python 数据分析(PYDA)第三版(七)
|
Python Shell 存储
Python 数据分析(PYDA)第三版(七)(3)
Python 数据分析(PYDA)第三版(七)
Python 数据分析(PYDA)第三版(七)(3)
|
机器学习/深度学习 数据可视化 Python
Python 数据分析(PYDA)第三版(六)(2)
Python 数据分析(PYDA)第三版(六)
|
机器学习/深度学习 Python 数据挖掘
Python 数据分析(PYDA)第三版(六)(1)
Python 数据分析(PYDA)第三版(六)
|
3天前
|
Python 数据格式 XML
Python 数据分析(PYDA)第三版(三)(1)
Python 数据分析(PYDA)第三版(三)