基于pandas的数据清洗:

处理空值操作:

isnull :df.isnull()--检测出原始数据中哪些行中存在空值

notnull:

any:可以帮助我们检测df中哪些行列中存在空值,必须配合isnull使用:isnull->any(axis=1)

all:也可以帮助我们检测元数据中哪些行列中存在空···值,必须配合notnull使用:notnull->all(axis=1)

dropna:删除元数据中存在空值的行数据:df.dropna(axis=0):注意在drop函数中,0表示的是行,1表示的是列,与原生行列相反

fillna:覆盖元数据中存在的空数据,必须配合axis使用。

df.fillna(method='bfill',axis=0) #使用紧邻值填充空值

df.fillna(method='ffill',axis=1) #使用紧邻值填充空值

处理重复操作:drop_duplicates

df.drop_duplicates(keep='first'):保留第一个重复的数据

df.drop_duplicates(keep='last'):保留最后一个重复的数据

df.drop_duplicates(keep=False):全部删除

处理异常数据:

df.drop(labels=xxxx):直接删除异常数据

级联操作:级联是对表格做拼接

匹配级联:

pd.concat((df1,df1,df1),axis=1):三张表按照列进行级联

pd.concat与np.concatenate函数类似,只是多了一些参数:

objs

axis=0

keys

join='outer' / 'inner':表示的是级联的方式,outer会将所有的项进行级联(忽略匹配和不匹配),而inner只会将匹配的项级联到一起,不匹配的不级联

ignore_index=False

pd.append:df1.append(df2)

不匹配级联:不匹配指的是级联的维度的索引不一致。例如纵向级联时列索引不一致,横向级联时行索引不一致

- 有2种连接方式:

- 外连接:补NaN(默认模式)

- 内连接:只连接匹配的项

合并操作:合并是对表格中的数据进行汇总

merge与concat的区别在于,merge需要依据某一共同列来进行合并

使用pd.merge()合并时,会自动根据两者相同column名称的那一列,作为key来进行合并。

注意每一列元素的顺序不要求一致

一对一合并:pd.merge(df1,df2)--合并两个表

一对多合并:pd.merge(df3,df4)--合并表中的相同的字段

多对多合并:pd.merge(df1,df5)--合并表中的全部字段

key的规范化

当列冲突时,即有多个列名称相同时,需要使用on=来指定哪一个列作为key,配合suffixes指定冲突列名

pd.merge(df1,df2,on='group')

当两张表没有可进行连接的列时,可使用left_on和right_on手动指定merge中左右两边的哪一列列作为连接的列:pd.merge(df1,df5,left_on='employee',right_on='name')

内合并和外合并:out取并集,inner取交集

pd.merge(df6,df7,how='right'):右合并,按照右边的表结构进行合并,左边表中的数据没有值的时候填充空的

how:‘outer/inner’

left_on='xxxx',左表的字段

right_on='xxxx'右表的字段

表中的数据

对象.info():查看表的数据

.unique: unique()是用来将Series中的元素进行去重操作

查询:query(条件)

排序:.sort_values(by='列名',ascending=False)

替换操作:

替换操作可以同步作用于Series和DataFrame中

单值替换:df.replace(to_replace=3,value='Three')/df.replace(to_replace={3:'aaa'})

普通替换: 替换所有符合要求的元素:to_replace=15,value='e'

按列指定单值替换: to_replace={列标签:替换值} value='value'

#替换指定列中的值

df.replace(to_replace={5:77},value='6666666')

多值替换

列表替换: to_replace=[] value=[]

字典替换(推荐) to_replace={to_replace:value,to_replace:value}

映射操作:

概念:创建一个映射关系列表,把values元素和一个特定的标签或者字符串绑定(给一个元素值提供不同的表现形式)

dic = {

'jay':'张三',

'tom':'李四'

}

df['c_name'] = df['name'].map(dic) #映射关系

映射索引

使用rename()函数替换行列索引

参数介绍:

index 替换行索引

columns 替换列索引

new_index = {0:'first',1:'two',2:'three',3:'four',4:'five'}

new_col={'color':'cc','value':'vv'}

df4.rename(new_index,columns=new_col)

排序实现的随机抽样

take() :可以更换原数据的行列位置,标注清楚axis就行

np.random.permutation()

np.random.permutation(3) #返回随机序列

分类处理

数据分类处理的核心:

groupby()函数

groups属性查看分组情况

#根据水果的种类进行分组,使用by方法

df.groupby(by='item')

#调用groups查看分组情况

df.groupby(by='item').groups

如果要取其中的某个值或者计算某个数值推荐使用以下方法

df.groupby(by='item')['price'].mean() #推荐

高级数据聚合

使用groupby分组后,也可以使用transform和apply提供自定义函数实现更多的运算

df.groupby('item')'price'.sum() <==> df.groupby('item')'price'.apply(sum)

transform和apply都会进行运算,在transform或者apply中传入函数即可

transform和apply也可以传入一个lambda表达式

def myMean(s):

sum = 0

for i in s:

sum += i

return sum/len(s)

df.groupby(by='item')['price'].apply(myMean) #apply充当聚合的运算工具

/

f.groupby(by='item')['price'].transform(myMean) #transform充当聚合的运算工具

数据加载

读取type.txt文件数据

example:data_1 = pd.read_csv('./data/type-.txt',sep='-',header=None)

读取数据库中的数据:

#连接数据库,获取连接对象

import sqlite3 as sqlite3

conn=sqlite3.connect('./data/weather_2012.sqlite(文件路径)')

#读取数据库中的数据:

sql_df=pd.read_sql('select * from weather_2012',conn)

sql_df

#将数据写入数据库中

data_1.to_sql('sql_data123',conn)

透视表:

透视表是一种可以对数据动态排布并且分类汇总的表格格式,我们在pandas中把它称为pivot_table。

优点:

灵活性高,可以随意定制分析需求

脉络清晰抑郁理解数据

操作性强。

pivot_table有四个最重要的参数index、values、columns、aggfunc

index:分类汇总的分类条件,每个pivot_table必须拥有一个index:df.pivot_table(index='列名')/df.pivot_table(index=['列名1','列2'])

values参数:需要对计算的数据进行筛选:df.pivot_table(index=['列1','列2'],values=['列1','列2','列3'])

Aggfunc参数:设置我们对数据聚合时进行的函数操作,如果我们不设置这个参数,默认是计算数据的均值(aggfunc='means'),也可以设置不同的addfunc参数:#还想获得james harden在主客场和不同胜负情况下的总得分、平均篮板、最大助攻时

df.pivot_table(index=['主客场','胜负'],aggfunc={'得分':'sum','篮板':'mean','助攻':'max'})

Columns:可以设置列层次字段:对values字段进行分类df.pivot_table(index='主客场',values='得分',aggfunc='sum',columns='对手')

交叉表:

是一种用于计算分组的特殊透视图,对数据进行汇总

pd.crosstab(index,colums)。

index:分组数据,交叉表的行索引

columns:交叉表的列索引

例子:求出各个性别抽烟的人数

pd.crosstab(df.smoke,df.sex)

matplotlib绘图

import matplotlib.pyplot as plt

%matplotlib inline #保证绘制的图像可以被正常的显示加载出来

python 数据清洗 豆瓣电影_Python高阶操作--关于数据清洗相关推荐

  1. python按照绝对值排序_Python高阶函数sorted排序

    sorted用法 sorted是Python提供的功能强大的排序函数.满足字符,数字等排序要求. 对数字进行排序: list = [-12, -2, -24, 20, 39, 10]; print(s ...

  2. python 高级面试题_Python高阶面试题

    3.mysql事务的4个层次: 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted(未授权读取.读未提交).Read committed(授权读取.读提交).Repeatabl ...

  3. Python自定义豆瓣电影种类,排行,点评的爬取与存储(高阶上)

    Python 2.7 IDE Pycharm 5.0.3 Firefox 47.0.1 豆瓣电影系列: - 基础抓取(限于"豆瓣高分"选项电影及评论)请看↓ Python自定义豆瓣 ...

  4. Python 标准库之 shutil 高阶文件操作『详细』

    Python标准库之 shutil 高阶文件操作『详细』 文章目录 Python标准库之 shutil 高阶文件操作『详细』 一.Python shutil介绍

  5. 基于Hadoop的豆瓣电影的数据抓取、数据清洗、大数据分析(hdfs、flume、hive、mysql等)、大屏可视化

    目录 项目介绍 研究背景 国内外研究现状分析 研究目的 研究意义 研究总体设计 数据获取 网络爬虫介绍 豆瓣电影数据的采集 数据预处理 数据导入及环境配置 Flume介绍 Hive介绍 MySQL介绍 ...

  6. Python自定义豆瓣电影种类,排行,点评的爬取与存储(进阶上)

    Python 2.7  IDE Pycharm 5.0.3  Firefox 47.0.1 具体Selenium及PhantomJS请看Python+Selenium+PIL+Tesseract真正自 ...

  7. 深度学习(17)TensorFlow高阶操作六: 高阶OP

    深度学习(17)TensorFlow高阶操作六: 高阶OP 1. Where(tensor) 2. where(cond, A, B) 3. 1-D scatter_nd 4. 2-D scatter ...

  8. Python自定义豆瓣电影种类,排行,点评的爬取与存储(进阶下)

    Python 2.7 IDE Pycharm 5.0.3 Firefox 47.0.1 如有兴趣可以从如下几个开始看起,其中有我遇到的很多问题: 基础抓取(限于"豆瓣高分"选项电影 ...

  9. python爬虫—豆瓣电影海报(按类别)

    原文地址:http://www.alannah.cn/2019/04/06/getdouban/ python爬虫-豆瓣电影海报 目标:通过python爬虫在豆瓣电影上按类别对电影海报等数据进行抓取, ...

最新文章

  1. python 字典
  2. 互联网1分钟 | 0410 腾讯QQ上线陌生人社交入口“扩列”测试;支付宝小程序与UC浏览器打通...
  3. Django(part45)--forms模块
  4. 电力电子、电机控制系统的建模和仿真_清华团队研发,首款国产电力电子仿真软件来啦~已捐赠哈工大、海工大、清华使用!...
  5. windows nginx c++读取请求数据_轻松应对百万并发的Nginx,搞懂LinuxC/C++这些技术栈升职加薪...
  6. printf函数源码linux,再来一版简易的printf函数实现
  7. JBS与盒马签署战略合作 将为后者提供2亿元美国进口谷饲牛肉
  8. 匹配特殊字符的正则表达式
  9. java继承test 怎么写_Java Junit Test 要怎么写?
  10. hdu 1518 dfs+剪枝
  11. 库克时期的苹果和乔布斯时期的苹果是否有差距?
  12. vf省计算机考试题库,计算机二级VF上机题库及答案
  13. vivo面试经验4(linux基本操作,最基本,必须得会!!)
  14. 卡巴斯基宣布高端静谧岑寂僻静产物PURE
  15. python学习day1:初识python
  16. 随心订制linux透明防火墙
  17. python定义函数求和_Python定义函数实现累计求和操作
  18. 51CTO学院优惠版
  19. 限速器校验合格范围_限速
  20. java 写出到文件

热门文章

  1. antd 表格树如何展开_元件区域 -- 菜单 | 表格 | 流程图 | 图标
  2. 使用jsp页面查看jvm使用情况
  3. C语言极坐标转直角坐标,C语言实现直角坐标转换为极坐标的方法
  4. java中输出a个b_下面代码输出什么 ( ) var a=0,b=0; for(;a10,b7;a++,b++){ g=a+b; } console.log(g);_学小易找答案...
  5. 2017长春java平均工资_2016年长春在岗职工社会平均工资出炉:66948元,月平均工资5579元...
  6. mysql binlog备份_MySQL mysqldump + mysqlbinlog 备份和还原
  7. ngnix的简单转发请求之server和location配置详解
  8. # Please enter the commit message for your changes. Lines starting # with ‘#‘ will be ignored
  9. RabbitMQ消费消息方法basicConsume
  10. kill-9导致weblogic无法启动