Pandas各种骚操作
stack()、unstack()、pivot()、pivot_table()
假如以下数据是5个公司4年分别的销售额:
import pandas as pddf = pd.DataFrame({"Company": ["Apple", "Google", "Facebook", "Amozon", "Tencent"],"2013": [5000, 3500, 2300, 2100, 3100],"2014": [5050, 3800, 2900, 2500, 3300],"2015": [5050, 3800, 2900, 2500, 3300],"2016": [5050, 3800, 2900, 2500, 3300]
})
melt()函数
df_melt = df.melt(id_vars=['Company'], var_name='Year', value_name='Sale')
pivot()函数
df_pivot = df_melt.pivot(index="Company", columns=["Year"], values=["Sale"])df_pivot.index # Index(['Amozon', 'Apple', 'Facebook', 'Google', 'Tencent'], dtype='object', name='Company')
df_pivot.columns # Index(['2013', '2014', '2015', '2016'], dtype='object', name='Year')
pivot_table()函数
pivot_table()函数和pivot()函数类似,但功能更为强大。
例如如下数据:
df = pd.DataFrame({'foo': ['one','one','one','one','two','two'],'bar': ['A', 'B', 'C', 'A', 'B', 'C'],'baz': [1, 2, 3, 4, 5, 6]})
df_pivot_table = df.pivot_table(index='foo', columns='bar', values='baz')
A在one中重复了两次,被默认取了平均值,A在two中不存在,值为NaN。这个聚合函数功能和填充功能可以通过aggfunc和fill_value参数控制,比如:
df_pivot_table = df.pivot_table(index='foo', columns='bar', values='baz', aggfunc=np.sum, fill_value=0)
以上功能如果使用pivot()函数会报错,因为限制了唯一性。此外,pivot_table()的index参数支持列表,而pivot()则会报错。
所以,通常,melt()通常和pivot_table()搭配使用。
import pandas as pddf = pd.DataFrame({"Name": ["苹果", "谷歌", "脸书", "亚马逊", "腾讯"],"Company": ["Apple", "Google", "Facebook", "Amozon", "Tencent"],"2013": [5000, 3500, 2300, 2100, 3100],"2014": [5050, 3800, 2900, 2500, 3300],"2015": [5050, 3800, 2900, 2500, 3300],"2016": [5050, 3800, 2900, 2500, 3300]
})
df_melt = df.melt(id_vars=['Name','Company'],var_name='Year',value_name='Sale')
df_pivot_table = df_melt.pivot_table(index=["Name", "Company"], columns=["Year"], values=["Sale"])
注意的是转换后的index和columns,是一个多维的:
df_pivot_table.index
MultiIndex([('亚马逊', 'Amozon'),( '脸书', 'Facebook'),( '腾讯', 'Tencent'),( '苹果', 'Apple'),( '谷歌', 'Google')],names=['Name', 'Company'])df_pivot_table.columns
MultiIndex([('Sale', '2013'),('Sale', '2014'),('Sale', '2015'),('Sale', '2016')],names=[None, 'Year'])
可以通过以下方法还原:
df_pivot_table.reset_index(inplace=True, col_level=1)
df_pivot_table.columns = df_pivot_table.columns.get_level_values(1).array
col_level参数表示index放在多重列的哪一列。
找出存在NaN的数据:
df[df.isnull().values==True]
找出NaN值的位置:
df.isnull().stack()[lambda x: x].index.tolist()
删除存在NaN值数据:
df.dropna(axis=0, how='any', inplace=True)
DataFrame的遍历:iterrows(), iteritems(), itertuples()
将Datetime列表转换为字符串类型的日期列表:
df_per_unit[‘date’]是Series对象,里面元素是datetime64[ns]类型。
list(pd.to_datetime(df_per_unit[‘date’].unique()).strftime("%Y-%m-%d"))
df[‘date’].unique():ndarray对象
df.reset_index()
df.set_index()
df.reindex(idx,fill_value=0)
显示不全问题
# 显示所有行
pd.set_option('display.max_rows', None)
# 显示所有列
pd.set_option('display.max_columns', None)
# 整体显示宽度
pd.set_option('display.width', 1000)
# 列显示宽度,默认为50
pd.set_option('max_colwidth', 1000)
Pandas各种骚操作相关推荐
- 【Python基础】pandas的骚操作:一行 pandas 代码搞定 Excel “条件格式”!
来源:Python数据科学 作者:东哥起飞 本篇是pandas100个骚操作系列的第 7 篇:一行 pandas 代码搞定 Excel "条件格式"! 系列内容,请看????「pa ...
- 20 个短小精悍的 pandas 骚操作
本次为大家整理了一个pandas骚操作操作的大集合,共20个功能,个个短小精悍,一次让你爱个够. 1. ExcelWriter 很多时候dataframe里面有中文,如果直接输出到csv里,中文将显示 ...
- pandas 筛选数据的 8 个骚操作
作者 | 东哥起飞 来源 | Python数据科学 日常用Python做数据分析最常用到的就是查询筛选了,按各种条件.各种维度以及组合挑出我们想要的数据,以方便我们分析挖掘. 总结了日常查询和筛选常用 ...
- 99%的人都不知道的pandas骚操作(一)
作者:xiaoyu 微信公众号:Python数据科学 知乎:python数据分析师 pandas有一种功能非常强大的方法,它就是accessor,可以将它理解为一种属性接口,通过它可以获得额外的方法. ...
- 直接保存 DataFrame 表格到本地,这个“骚操作”你还不知道?
作者 | 黄伟呢 来源 | 数据分析与科学之美 头图 | 东方ic 知识是需要积累的,有些冷知识.骚操作,你可能现在不需要,但是只有当你玩儿过,以后再碰到这个需求,你才会有印象,方便查询. 引入问题 ...
- python提取pdf表格数据_Python骚操作,提取pdf文件中的表格数据!
在实际研究中,我们经常需要获取大量数据,而这些数据很大一部分以pdf表格的形式呈现,如公司年报.发行上市公告等.面对如此多的数据表格,采用手工复制黏贴的方式显然并不可取.那么如何才能高效提取出pdf文 ...
- 五分钟没有操作自动退出_这又是什么骚操作??5只蚂蚁战略配售基金拟增设B类份额,自动赎回退出!!...
他来了,他来了,这又是什么骚操作??昨天,五只创新未来18个月封闭运作混合型证券投资基金发布联合声明,会为这个战略配售基金安排一个月的退出选择期. 5只创新未来18个月封闭运作混合型证券投资基金发布联 ...
- GitHub 骚操作,个人页还能这么玩?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 之前写过一篇 GitHub 骚操作的文章 GitHub 竟 ...
- 数据分析工具Pandas(2):Pandas的索引操作
数据分析工具Pandas(1):Pandas的数据结构 数据分析工具Pandas(2):Pandas的索引操作 Pandas的索引操作 索引对象Index 1. Series和DataFrame中的索 ...
最新文章
- 学python是看书还是看视频-自学Python是看书还是看视频?
- 从硬件开始实践物联网-物联网弹幕器的灵感!
- 新建了一个英文Blog
- 台积电放大招:甩开英特尔 7nm和5nm芯片将诞生
- 看完此文再不懂区块链算我输:手把手教你用Python从零开始创建区块链
- 2019-02-25-算法-进化
- [NVIDIA] Ububtu 获取 CUDA_ARCH
- 250g硬盘linux如何分区合适,500G的硬盘,怎么分区比较合理?
- C# 中返回星期的函数
- Android TextToSpeech TTS中文文本转语音(语音合成)
- r语言 面板数据回归_在R语言中进行面板数据分析
- 硬盘的免费分区工具:简单、易用
- 职场Word使用技巧大全,太实用了
- 斯托克斯公式(三维中两类曲面和第二类曲线互相转换)
- 【kettle抽取Orecle/Mysql数据至HDFS】诸如‘\u0001’等特殊分隔符表示法
- 【沃顿商学院学习笔记】公益创业——04了解受益人Understanding the Beneficiary
- 3D建模你不知道的电影角色秘密
- VScode 常用必备插件
- 关于心跳ajax请求pending状态(被挂起),stalled时间过长的问题。涉及tcp连接异常。
- ALTER TABLE 表结构变更
热门文章
- 【Python黑科技】tkinter库实战“贪吃蛇”小游戏(保姆级图文+实现代码)
- 五分钟学Java:可变参数究竟是怎么一回事?
- 当勺子遇到“黑科技”,竟可尝百味
- 生活:你是如何毁掉生活中的情趣的
- Meanshift聚类算法
- 开发单页应用(SPA)时候遇到的微信支付授权目录的坑
- shell学习之查找当前目录下文件以及文件夹大小-'du'命令和'df'命令
- 服务器cpu支持4通道什么意思,Intel 10nm服务器CPU曝光 LGA4189接口、八通道内存
- 计算机应用素描色彩,美术统考素描、色彩、速写考场技巧全攻略
- 电源地线和大地的关系