python之pandas用法大全


Posted in Python onMarch 13, 2018

一、生成数据表

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

import numpy as np
import 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 行数据

三、数据表清洗

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')

以上就是关于pandas的基本用法,大家可以参考下

Python 相关文章推荐
Python中使用item()方法遍历字典的例子
Aug 26 Python
Python实现程序的单一实例用法分析
Jun 03 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
Apr 11 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
python使用PIL实现多张图片垂直合并
Jan 15 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
python将三维数组展开成二维数组的实现
Nov 30 Python
Pytorch中膨胀卷积的用法详解
Jan 07 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
May 19 Python
使用tensorflow根据输入更改tensor shape
Jun 23 Python
Python+OpenCV检测灯光亮点的实现方法
Nov 02 Python
pytorch 计算Parameter和FLOP的操作
Mar 04 Python
python使用sqlite3时游标使用方法
Mar 13 #Python
Python打印输出数组中全部元素
Mar 13 #Python
python实现学生信息管理系统
Apr 05 #Python
python针对excel的操作技巧
Mar 13 #Python
python实现聊天小程序
Mar 13 #Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
Mar 13 #Python
python实现简易通讯录修改版
Mar 13 #Python
You might like
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
PHP网站基础优化方法小结
2008/09/29 PHP
php中计算程序运行时间的类代码
2012/11/03 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
JavaScript入门教程(11) js事件处理
2009/01/31 Javascript
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
jQuery监听文件上传实现进度条效果的方法
2016/10/16 Javascript
详解jQuery停止动画——stop()方法的使用
2016/12/14 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
详解vue项目中实现图片裁剪功能
2019/06/07 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
[03:06]2018年度CS GO最具人气解说-完美盛典
2018/12/16 DOTA
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
对python实时得到鼠标位置的示例讲解
2018/10/14 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
2020/03/06 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
宣传普通话标语
2014/06/27 职场文书
监考失职检讨书
2015/01/26 职场文书
通知范文怎么写
2015/04/16 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书