pandas 中DataFrame使用:数据导入\出,重复值处理,缺失数据处理,字段抽取,字段拆分
本文测试使用Pandas使用的是Spyder,python3.6版本,已经安装好pandas包。测试数据已放云盘:链接:https://pan.baidu.com/s/1zozpY2BUTIvEJKf238leZg 密码:44zg。如需按照numpy,可以百度搜索如何安装。
1数据导入
1.1csv数据导入方式:
#导包
from pandas import read_csv
df=read_csv(r"C:\Users\JackPi\Desktop\pandas\data\1.csv",encoding='UTF-8')
数据读入前后比对:
1.2导入文本文件:
使用read_table函数导入普通文本文件,其中read_able函数语法为:read_table(file,names=[列名1,列名2,…],sep=”“,encoding,..),其中
file: 文本路径
names:列名,默认为文件中的第一行作为列名
sep:分隔符,默认为空,表示默认导入为一列
encoding:设置文件编码,在导入中文的时候需要设置为UTF-8
读取代码:
#导包
from pandas import read_table
df=read_table(r"C:\Users\JackPi\Desktop\pandas\data\2.txt",names=['age','name'],sep=',',encoding='UTF-8')
读入数据前后对比:
1.3导入Excel文件:
使用read_excel函数导入Excel文件,read_excel函数的语法:read_excel(fileName,sheet_name,names),其中:
fileName:文件路径
sheet_name:Sheet的名字
names:列名,默认为文件中的第一行作为列名
读取代码:
#导包
from pandas import read_excel
df=read_excel(r"C:\Users\JackPi\Desktop\pandas\data\3.xlsx",sheet_name='data')
读取前后数据对比:
2数据导出
导出为csv文件
使用to_csv函数,语法:to_csv(filePath,sep=”,”,index=TRUE,header=TRUE),其中:
filePath:导出文件的路径
sep:分隔符,默认为逗号(“,”),也就是以逗号分割列
index:是否导出序号,默认为TRUE,也就是导出行序号
header:是否导出列名,默认为TRUE,也就是导出列名
写出代码:
#导包
from pandas import DataFrame
#定义一些数据
df=DataFrame({
'age':[18,19,20],
'name':['test1','test2','test3']
})
#数据导出
df.to_csv(r"C:\Users\JackPi\Desktop\pandas\data\df_out.csv",index=False)
导出结果:
3重复值处理
把数据结构中,行相同的数据只保留一行。函数语法:drop_duplicates()
#导包
from pandas import read_csv
df=read_csv(r"C:\Users\JackPi\Desktop\pandas\data\data.csv")
newDf=df.drop_duplicates()
4缺失数据的处理
缺失数据造成的原因:有些洗洗暂时无法获取,有些信息被遗漏或者错误处理了;处理方式:数据补齐,删除对应缺失行,不处理。
删除缺失数据所在行:dropna()函数(去除数据结构中值为空的数据)
#导包
from pandas import read_csv
df=read_csv(r"C:\Users\JackPi\Desktop\pandas\data\data1.csv")
newDf=df.dropna()
5字段抽取
是根据已知数据的开始和结束位置,抽取出新的列,字段截取函数:slice(start,stop),其中:
start:开始位置
stop:结束位置
例如截取电话号码数据:
#导包
from pandas import read_csv
df=read_csv(r"C:\Users\JackPi\Desktop\pandas\data\data2.csv")
#格式转换为字符串类型
df['tel']=df['tel'].astype(str)
#运营商
company=df['tel'].str.slice(0,3)
#运营商
area=df['tel'].str.slice(3,7)
#号码段
nums=df['tel'].str.slice(7,11)
6字段拆分
按照固定的字符,拆分已有字符串。所使用的字符分割函数:split(step,n,expand=False),其中:
sep:用于分割的字符串
n:分割为多少列
expand:是否展开为数据框,默认为False,如果expand为True,则返回DataFrame,如果expand为False,则返回Series。
#导包
from pandas import read_csv
df=read_csv(r"C:\Users\JackPi\Desktop\pandas\data\data3.csv")
#先转为str类型,再用空格隔开,切割1列,也就是分割成2列
newDf=df['name'].str.split(' ',1,True)
#为分割后的数据设置列名
newDf.columns=['band','name']
分割前后数据比较:
上一篇: .net core使用ocelot---第一篇 简单使用
下一篇: 二叉树