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各种骚操作相关推荐

  1. 【Python基础】pandas的骚操作:一行 pandas 代码搞定 Excel “条件格式”!

    来源:Python数据科学 作者:东哥起飞 本篇是pandas100个骚操作系列的第 7 篇:一行 pandas 代码搞定 Excel "条件格式"! 系列内容,请看????「pa ...

  2. 20 个短小精悍的 pandas 骚操作

    本次为大家整理了一个pandas骚操作操作的大集合,共20个功能,个个短小精悍,一次让你爱个够. 1. ExcelWriter 很多时候dataframe里面有中文,如果直接输出到csv里,中文将显示 ...

  3. pandas 筛选数据的 8 个骚操作

    作者 | 东哥起飞 来源 | Python数据科学 日常用Python做数据分析最常用到的就是查询筛选了,按各种条件.各种维度以及组合挑出我们想要的数据,以方便我们分析挖掘. 总结了日常查询和筛选常用 ...

  4. 99%的人都不知道的pandas骚操作(一)

    作者:xiaoyu 微信公众号:Python数据科学 知乎:python数据分析师 pandas有一种功能非常强大的方法,它就是accessor,可以将它理解为一种属性接口,通过它可以获得额外的方法. ...

  5. 直接保存 DataFrame 表格到本地,这个“骚操作”你还不知道?

    作者 | 黄伟呢 来源 | 数据分析与科学之美 头图 | 东方ic 知识是需要积累的,有些冷知识.骚操作,你可能现在不需要,但是只有当你玩儿过,以后再碰到这个需求,你才会有印象,方便查询. 引入问题 ...

  6. python提取pdf表格数据_Python骚操作,提取pdf文件中的表格数据!

    在实际研究中,我们经常需要获取大量数据,而这些数据很大一部分以pdf表格的形式呈现,如公司年报.发行上市公告等.面对如此多的数据表格,采用手工复制黏贴的方式显然并不可取.那么如何才能高效提取出pdf文 ...

  7. 五分钟没有操作自动退出_这又是什么骚操作??5只蚂蚁战略配售基金拟增设B类份额,自动赎回退出!!...

    他来了,他来了,这又是什么骚操作??昨天,五只创新未来18个月封闭运作混合型证券投资基金发布联合声明,会为这个战略配售基金安排一个月的退出选择期. 5只创新未来18个月封闭运作混合型证券投资基金发布联 ...

  8. GitHub 骚操作,个人页还能这么玩?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 之前写过一篇 GitHub 骚操作的文章 GitHub 竟 ...

  9. 数据分析工具Pandas(2):Pandas的索引操作

    数据分析工具Pandas(1):Pandas的数据结构 数据分析工具Pandas(2):Pandas的索引操作 Pandas的索引操作 索引对象Index 1. Series和DataFrame中的索 ...

最新文章

  1. 学python是看书还是看视频-自学Python是看书还是看视频?
  2. 从硬件开始实践物联网-物联网弹幕器的灵感!
  3. 新建了一个英文Blog
  4. 台积电放大招:甩开英特尔 7nm和5nm芯片将诞生
  5. 看完此文再不懂区块链算我输:手把手教你用Python从零开始创建区块链
  6. 2019-02-25-算法-进化
  7. [NVIDIA] Ububtu 获取 CUDA_ARCH
  8. 250g硬盘linux如何分区合适,500G的硬盘,怎么分区比较合理?
  9. C# 中返回星期的函数
  10. Android TextToSpeech TTS中文文本转语音(语音合成)
  11. r语言 面板数据回归_在R语言中进行面板数据分析
  12. 硬盘的免费分区工具:简单、易用
  13. 职场Word使用技巧大全,太实用了
  14. 斯托克斯公式(三维中两类曲面和第二类曲线互相转换)
  15. 【kettle抽取Orecle/Mysql数据至HDFS】诸如‘\u0001’等特殊分隔符表示法
  16. 【沃顿商学院学习笔记】公益创业——04了解受益人Understanding the Beneficiary
  17. 3D建模你不知道的电影角色秘密
  18. VScode 常用必备插件
  19. 关于心跳ajax请求pending状态(被挂起),stalled时间过长的问题。涉及tcp连接异常。
  20. ALTER TABLE 表结构变更

热门文章

  1. 【Python黑科技】tkinter库实战“贪吃蛇”小游戏(保姆级图文+实现代码)
  2. 五分钟学Java:可变参数究竟是怎么一回事?
  3. 当勺子遇到“黑科技”,竟可尝百味
  4. 生活:你是如何毁掉生活中的情趣的
  5. Meanshift聚类算法
  6. 开发单页应用(SPA)时候遇到的微信支付授权目录的坑
  7. shell学习之查找当前目录下文件以及文件夹大小-'du'命令和'df'命令
  8. 服务器cpu支持4通道什么意思,Intel 10nm服务器CPU曝光 LGA4189接口、八通道内存
  9. 计算机应用素描色彩,美术统考素描、色彩、速写考场技巧全攻略
  10. 电源地线和大地的关系