《Python3爬虫、数据清洗和可视化实战》之阅读不懂处、主要代码总结(9章)

系统 1348 0

《Python3爬虫、数据清洗和可视化实战》

零一 韩要宾 黄园园 著


第九章:pandas数据清理

9.1 数据读写、选择、整理和描述

Pandas是用来数据清洗的Python库,由于它的依赖库很多,所以建议还是下载anaconda,里面内置了相关库。

9.1.1 读取CSV数据

            
              df = pd.read_csv(“csv_path”,delimiter=”,”,encoding=””)   

            
          

参数说明:
“csv_path”,CSV文件路径;delimiter=”,”:分隔方式;encoding=””:文件编码格式。

9.1.2 向CSV写入数据

            
              df.to_csv(“csv_path”,columns=[‘value1’,’value2’],index=False,header=True)	

            
          

参数说明:
“csv_path”文件路径,columns=[‘value1’,’value2’]:需要写入的数据,index=False:将DataFrame保存成文件,并忽略索引信息(True为默认值,保存索引信息),header=True

查看表中的描述性统计信息

            
              df.describe()

            
          

9.2 数据分组,分割,合并和变形

9.2.1数据分组

Groupby:

            
              Means = df[“成交量”].groupby(df[“成交量”],df[“卖家”]).mean()
>>>Means

            
          

size方法:返回一个含有各个分组大小的Series

9.2.2数据分割

            
              df1=df[30:40][[‘位置’,’卖家’]]	

#df1中包含第30-39行数据

            
          

9.2.3数据合并

Pandas包含三种内置的合并数据集方法:

Pandas.merge 根据一个或多个键将多个DataFrame连接起来
Pandas.concat 可以沿着一个轴将多个对象堆叠起来
Combine_first 可以将重叠部分合并,用以填充缺失部分
            
              Pandas.merge(df1,df2,on=” Column_name”,how=”inner/outer/left”,left_index=True,right_index=true)

            
          

参数说明:
On:合并相同列名的列,默认会选择相同列名。
How:包含inner(内连接),outer(外连接),left(左连接),right(右连接)

内连接 两个表中相同数据合并输出
外连接 两个表中全部数据合并输出
左连接 以左边表(df1)为基础,添加df1中没有的行属性(从df2中找新数据)
左连接 以右边表(df2)为基础,添加df2中没有的行属性(从df1中找新数据)

left_index:将左边表(df1)索引作为连接键
right_index:将右边表(df2)索引作为连接键(df1.join(df2):join方法同样可以将索引作为连接键使用)

Pandas.concat([s1,s2,s3]) #沿着s1,s2,s3的轴合并在一起

9.2.4 数据变形

Data.stack()方法:将Data的列转换为行
Data.unstack()方法:将Data的行转换为列


9.3 缺失值、异常值和重复值处理

9.3.1 缺失值处理

查看缺失值: df1.isnull()
删除行: df1.dropna()
代替缺失值: df1.fillna(“代替值”)
df1.fillna(method=”pad/bfill”,limit=1) #pad使用前一个同属性的数据代替空值;fill使用后一个同属性的数据代替空值;limit表示每列代替空值的数目

9.3.3 移除重复值

判断是否存在重复值: df1.duplicated()
删除重复数据: df1.drop_duplicates()

9.4 时序数据处理

9.4.1 日期/时间数据转换

            
              import time 
>>>Time.time()							#输出系统时间戳
>>>time.localtime()						#输出系统时间
>>>time.mktime(time.localtime())		#将系统时间转化为时间戳

            
          

9.4.2 时序数据基础操作

            
              import datetime
import numpy as np
import pandas as pd

#periods表示输出几天(从2019-05-17开始计算);freq表示按照什么单位生成序列(M/D/H:月/天/小时)
Pd.date_range(“2019-05-17”,periods=31,freq=”M/D/H”)

            
          

"Life's a mixed bag, no matter who you are."--《About Time》


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论