Python pandas用法最全整理


Posted in Python onAugust 04, 2019

1、首先导入pandas库,一般都会用到numpy库,所以我们先导入备用:

import numpy as npimport pandas as pd

2、导入CSV或者xlsx文件:

df = pd.DataFrame(pd.read_csv('name.csv',header=1))df = pd.DataFrame(pd.read_excel('name.xlsx'))

3、用pandas创建数据表:

df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006], "date":pd.date_range('20130102', periods=6), "city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '], "age":[23,44,54,32,34,32], "category":['100-A','100-B','110-A','110-C','210-A','130-F'], "price":[1200,np.nan,2133,5433,np.nan,4432]},columns =['id','date','city','category','age','price'])

二、数据表信息查看

1、维度查看:

df.shape

2、数据表基本信息(维度、列名称、数据格式、所占空间等):

df.info()

3、每一列数据的格式:

df.dtypes

4、某一列格式:

df['B'].dtype

5、空值:

df.isnull()

6、查看某一列空值:

df.isnull()

7、查看某一列的唯一值:

df['B'].unique()

8、查看数据表的值:

df.values

9、查看列名称:

df.columns

10、查看前10行数据、后10行数据:

df.head() #默认前10行数据df.tail()  #默认后10 行数据

相关推荐:《Python视频教程》

三、数据表清洗

1、用数字0填充空值:

df.fillna(value=0)

2、使用列prince的均值对NA进行填充:

df['prince'].fillna(df['prince'].mean())

3、清楚city字段的字符空格:

df['city']=df['city'].map(str.strip)

4、大小写转换:

df['city']=df['city'].str.lower()

5、更改数据格式:

df['price'].astype('int')

6、更改列名称:

df.rename(columns={'category': 'category-size'})

7、删除后出现的重复值:

df['city'].drop_duplicates()

8、删除先出现的重复值:

df['city'].drop_duplicates(keep='last')

9、数据替换:

df['city'].replace('sh', 'shanghai')

四、数据预处理

df1=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008], "gender":['male','female','male','female','male','female','male','female'],"pay":['Y','N','Y','Y','N','Y','N','Y',],"m-point":[10,12,20,40,40,40,30,20]})

1、数据表合并

df_inner=pd.merge(df,df1,how='inner') # 匹配合并,交集df_left=pd.merge(df,df1,how='left')    #df_right=pd.merge(df,df1,how='right')df_outer=pd.merge(df,df1,how='outer') #并集

2、设置索引列

df_inner.set_index('id')

3、按照特定列的值排序:

df_inner.sort_values(by=['age'])

4、按照索引列排序:

df_inner.sort_index()

5、如果prince列的值>3000,group列显示high,否则显示low:

df_inner['group'] = np.where(df_inner['price'] > 3000,'high','low')

6、对复合多个条件的数据进行分组标记

df_inner.loc[(df_inner['city'] == 'beijing') & (df_inner['price'] >= 4000), 'sign']=1

7、对category字段的值依次进行分列,并创建数据表,索引值为df_inner的索引列,列名称为category和size

pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category','size']))

8、将完成分裂后的数据表和原df_inner数据表进行匹配

df_inner=pd.merge(df_inner,split,right_index=True, left_index=True)

五、数据提取

主要用到的三个函数:loc,iloc和ix,loc函数按标签值进行提取,iloc按位置进行提取,ix可以同时按标签和位置进行提取。

1、按索引提取单行的数值

df_inner.loc[3]

2、按索引提取区域行数值

df_inner.iloc[0:5]

3、重设索引

df_inner.reset_index()

4、设置日期为索引

df_inner=df_inner.set_index('date')

5、提取4日之前的所有数据

df_inner[:'2013-01-04']

6、使用iloc按位置区域提取数据

df_inner.iloc[:3,:2] #冒号前后的数字不再是索引的标签名称,而是数据所在的位置,从0开始,前三行,前两列。

7、适应iloc按位置单独提起数据

df_inner.iloc[[0,2,5],[4,5]] #提取第0、2、5行,4、5列

8、使用ix按索引标签和位置混合提取数据

df_inner.ix[:'2013-01-03',:4] #2013-01-03号之前,前四列数据

9、判断city列的值是否为北京

df_inner['city'].isin(['beijing'])

10、判断city列里是否包含beijing和shanghai,然后将符合条件的数据提取出来

df_inner.loc[df_inner['city'].isin(['beijing','shanghai'])]

11、提取前三个字符,并生成数据表

pd.DataFrame(category.str[:3])

六、数据筛选

使用与、或、非三个条件配合大于、小于、等于对数据进行筛选,并进行计数和求和。

1、使用“与”进行筛选

df_inner.loc[(df_inner['age'] > 25) & (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']]

2、使用“或”进行筛选

df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']].sort(['age'])

3、使用“非”条件进行筛选

df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id'])

4、对筛选后的数据按city列进行计数

df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id']).city.count()

5、使用query函数进行筛选

df_inner.query('city == ["beijing", "shanghai"]')

6、对筛选后的结果按prince进行求和

df_inner.query('city == ["beijing", "shanghai"]').price.sum()

七、数据汇总

主要函数是groupby和pivote_table

1、对所有的列进行计数汇总

df_inner.groupby('city').count()

2、按城市对id字段进行计数

df_inner.groupby('city')['id'].count()

3、对两个字段进行汇总计数

df_inner.groupby(['city','size'])['id'].count()

4、对city字段进行汇总,并分别计算prince的合计和均值

df_inner.groupby('city')['price'].agg([len,np.sum, np.mean])

八、数据统计

数据采样,计算标准差,协方差和相关系数

1、简单的数据采样

df_inner.sample(n=3)

2、手动设置采样权重

weights = [0, 0, 0, 0, 0.5, 0.5]df_inner.sample(n=2, weights=weights)

3、采样后不放回

df_inner.sample(n=6, replace=False)

4、采样后放回

df_inner.sample(n=6, replace=True)

5、 数据表描述性统计

df_inner.describe().round(2).T #round函数设置显示小数位,T表示转置

6、计算列的标准差

df_inner['price'].std()

7、计算两个字段间的协方差

df_inner['price'].cov(df_inner['m-point'])

8、数据表中所有字段间的协方差

df_inner.cov()

9、两个字段的相关性分析

df_inner['price'].corr(df_inner['m-point']) #相关系数在-1到1之间,接近1为正相关,接近-1为负相关,0为不相关

10、数据表的相关性分析

df_inner.corr()

九、数据输出

分析后的数据可以输出为xlsx格式和csv格式

1、写入Excel

df_inner.to_excel('excel_to_python.xlsx', sheet_name='bluewhale_cc')

2、写入到CSV

df_inner.to_csv('excel_to_python.csv')

以上就是最全的Python pandas用法总结的详细内容,感谢大家的阅读和对三水点靠木的支持。

Python 相关文章推荐
Python新手们容易犯的几个错误总结
Apr 01 Python
Python类的继承和多态代码详解
Dec 27 Python
Python实现嵌套列表去重方法示例
Dec 28 Python
python unittest实现api自动化测试
Apr 04 Python
python占位符输入方式实例
May 27 Python
关于python中密码加盐的学习体会小结
Jul 15 Python
如何获取Python简单for循环索引
Nov 21 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
Feb 29 Python
详解python算法常用技巧与内置库
Oct 17 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
Mar 03 Python
基于PyQT5制作一个桌面摸鱼工具
Feb 15 Python
Python实现科学占卜 让视频自动打码
Apr 09 Python
python匿名函数用法实例分析
Aug 03 #Python
pycharm编写spark程序,导入pyspark包的3中实现方法
Aug 02 #Python
Python适配器模式代码实现解析
Aug 02 #Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 #Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 #Python
pandas DataFrame的修改方法(值、列、索引)
Aug 02 #Python
Flask框架钩子函数功能与用法分析
Aug 02 #Python
You might like
做一个有下拉功能的留言版
2006/10/09 PHP
php htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
php空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
jQuery 1.7.2中getAll方法的疑惑分析
2012/05/23 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
JavaScipt中栈的实现方法
2016/02/17 Javascript
vue数据双向绑定原理解析(get & set)
2017/03/08 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
深入理解Angularjs 脏值检测
2018/10/12 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
详解python开发环境搭建
2016/12/16 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
表达自我的市场:Society6
2018/08/01 全球购物
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
个人找工作的自我评价
2013/10/17 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
商业计算机应用专业自荐书
2014/06/09 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
西双版纳导游词
2015/02/03 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
Redis如何一键部署脚本
2021/04/12 Redis
Vue中插槽slot的使用方法与应用场景详析
2021/06/08 Vue.js
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers
Python OpenGL基本配置方式
2022/05/20 Python