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的Django框架中的项目进行单元测试的方法
Apr 11 Python
对python的unittest架构公共参数token提取方法详解
Dec 17 Python
python实现石头剪刀布程序
Jan 20 Python
总结python中pass的作用
Feb 27 Python
Python中拆分字符串的操作方法
Jul 23 Python
python批量处理文件或文件夹
Jul 28 Python
OpenCV python sklearn随机超参数搜索的实现
Jan 17 Python
Python unittest框架操作实例解析
Apr 13 Python
python 爬虫请求模块requests详解
Dec 04 Python
python基于win32api实现键盘输入
Dec 09 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
Jan 29 Python
Python WSGI 规范简介
Apr 11 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
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
php取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
一个PHP的ZIP压缩类分享
2014/05/04 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
window.open不被拦截的实现代码
2012/08/22 Javascript
使用jquery实现简单的ajax
2013/07/08 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
js的hasownproperty使用示例
2014/03/02 Javascript
javascript闭包概念简单解析(推荐)
2016/06/03 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
2016/06/18 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
JS回调函数深入理解
2019/10/16 Javascript
[49:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第二场 3月4日
2021/03/11 DOTA
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
基于python全局设置id 自动化测试元素定位过程解析
2019/09/04 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
优秀老师事迹材料
2014/02/05 职场文书
节约电力资源的建议书
2014/03/12 职场文书
元旦晚会感言
2014/03/12 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
董事长秘书工作职责
2014/06/10 职场文书
百家讲坛观后感
2015/06/12 职场文书
2015入党个人自传范文
2015/06/26 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
PHP遍历数组的6种方式总结
2021/11/17 PHP
MySQL 数据表操作
2022/05/04 MySQL