当前位置:   article > 正文

Python数据预处理_df.astype(str)

df.astype(str)

1.导入数据文件(excel,csv,数据库文件等)

  1. df=read_table(file,names=[列名1,列名2,,,],sep="",encoding)
  2. #file是文件路径,names默认为文件的第一行为列名,sep为分隔符,默认为空,表示默认导入为一列
  3. #encoding设置文件编码,导入中文时,需设置utf-8

2.导出数据文件

  1. to_csv(filepath,sep="",index=TRUE,header=TRUE)
  2. #index是否导出行序号,默认为导出,header是否导出列名,默认为导出
  3. data.loc[:,["城市","公司全名"]] #输出特定列,行可类比
  4. data.iloc[3,1] #输出第三行,第一位
  5. data.iloc[3:5,1:3] #3-5行,1-2列交集
  6. data.ix[:3,["A","C"]] #0-3
  7. data.A>8 #输出A列大于8的所有行
  8. print(df[data.A>8])

3.重复值处理(只保留一个)

df.drop_duplicates()#直接调用函数即可(保留一行)

4.缺失值处理
产生原因:信息无法获取,信息被遗漏或错误处理
处理方式:补齐,删除缺失行,不处理

  1. df.dropna()#去除数据结构中值为空的数据
  2. df.dropna(axis=0,how="any") #注释:axis=0代表"行","any"代表任何空值行,如何是"all"则代表所有值都为空时,才删除该行
  3. df.fillna(value=0) #填充空值为0 适合数据庞大不易观察的情况下
  4. print(df.isnull()) #判断空值
  5. print(np.any(df.isnull())==True) #至少包含一个空值,则返回true

5.空格值处理

  1. n=df["name"].str.strip() #清除字符型数据左右的空格
  2. df["name"]=n

6.字段抽取与字段拆分
根据已知列数据的开始和结束,抽出新的列

  1. slice(start,stop) #开始位置,结束位置
  2. 如:号码138 1337 5758
  3. df["tel"]=df["tel"].astype(str)
  4. df["tel"].str.slice(0,3) #抽取手机号码的前三位数(运营商)
  5. #字段拆分
  6. split(sep,n,expand=False)
  7. #sep指用于分割的字符串,n指分割为多少列,expand是否展开为数据框(默认为False返回series,True返回dataframe)
  8. news=df["name"].str.split("",1,True) #1代表拆分为两列,从0开始计数
  9. news.columns=["band","names"] #命名

7.记录抽取

  1. #DataFrame[condition]
  2. #比较
  3. df[df.comments>10000]
  4. #范围
  5. between(left,right)
  6. df[df.comments.between(1000,10000)]
  7. #空值匹配
  8. pandas.isnull(column) #判断是否有空值
  9. df[pandas.isnull(df.title)
  10. #字符匹配
  11. str.contains(patten,na=False) #空值的处理方式,空值不匹配(False)
  12. 如:df[df.title.str.contains("台电",na=False)]
  13. #逻辑运算(与&,或|,取反not)
  14. 如:df[(df.comments>=1000)&(df.comments<=10000)]
  15. 等价于df[df.comments.between(1000,10000)]

8.随机抽样(按照一定的行数或比例抽取)

  1. import numpy as np
  2. np.random.randint(start,end,num) #在startend之间随机抽取num个样本数,返回行所在的索引值
  3. 如:r=np.random.randint(0,10,3)
  4. df.loc(r,:) #将所在行输出

9.记录合并
将两个结构相同的数据框合并为一个数据框

  1. concat([df1,df2,,],axis=0,ignore_index=True)
  2. #axis=0代表竖向排列,ignore_index代表忽视索引,重新排序,参数join默认为outer,反之inner代表相同部分合并
  3. df1.append([df2,df3],ignore_index=True) #拼接

10.字段合并

字段拆分的逆向操作

  1. 字符合并方法:
  2. x=x1+x2+,,,(序列长度一直,并且为字符型数据)
  3. df.astype(str) #转换为字符型数据
  4. tel=df["band"]+df["area"]+["num"] #合并且赋值于新变量

11.字段匹配

  1. merge函数
  2. left=pd.DataFrame({})
  3. res=pd.merge(left,right,on="key") #多个关键词,on="key1","key2"
  4. #默认的合并方式是how="inner":合并同类项,outer为合并所有的,没有的以空值NAN填充
  5. #或者(left,right,left_index=True,right_index=True,how="outer")
  6. #合并多个dataframe
  7. contat([df1,df2,df3],axis=0) #axis=0代表竖向排列
  8. #append() 对dataframe进行拼接

12.简单计算
res=df.price*df.num
df["total"]=a
13.数据标准化(0-1)
x*=(x-min)/(max-min)
scale=(df.score-df.score.min())/(df.score.max()-df.score.min())

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/730265
推荐阅读
相关标签
  

闽ICP备14008679号