1. 重复值的处理
利用drop_duplicates()函数删除数据表中重复多余的记录, 比如删除重复多余的ID.
import pandas as pd
df = pd.DataFrame({'ID':["A1000","A1001","A1002", "A1002"], 'depatID':[60001,60001, 60001, 60001]})
print(df)
print(df.drop_duplicates()) # 去重
2. 缺失值的处理
缺失值是数据中因缺少信息而造成的数据聚类,分组和截断
缺失值的处理方式通常有三种: 补齐缺失值, 删除缺失值保留缺失值.
1)补齐缺失值:使用计算出的值去填充缺失值,如平均值,众数
import pandas as pd
import numpy as np
df = pd.DataFrame({'ID':['A10001', 'A10002', 'A10003', 'A10004'], "Salary":[11560, np.NaN, 12988,12080]})
df['Salary'] = df['Salary'].fillna(df['Salary'].mean()) # 平均数
# df['Salary'] = df['Salary'].fillna(df['Salary'].mode()[0]) 众数
# df['Salary'] = df['Salary'].fillna(df['Salary'].median()) # 中位数
print(df)
2)删除缺失值:当数据量大时且缺失值占比较小可选用删除缺失值的记录
采用dropna函数对缺失值进行删除
df = pd.DataFrame({'pass':['a1','a2','a3','a4'],'name':['ming', 'hong',pd.NaT, 'li']})
print(df)
print(df.dropna())
3)保留缺失值
3.删除前后空格
使用strip()函数删除前后空格
df = pd.DataFrame({'pass':['a1','a2','a3','a4'],'name':['ming', 'hong',' ke ', 'li']})
print(df)
df['name'] = df['name'].str.strip()
print(df)
4.查看数据类型
查看所有类用dtypes, 单列用dtype
df = pd.DataFrame({‘pass’:[11, 22, 33, 44],‘name’:[‘ming’, ‘hong’,’ ke ‘, ‘li’]})
df[‘name’] = df[‘name’].str.strip()
# 查看所有列的数据类型
print(df.dtypes)
print(’-’)
# 查看选定的单列的数据类型
print(df[‘name’].dtype)
5.修改数据类型
使用astype()函数对数据类型进行修改
df = pd.DataFrame({'pass':[11, 22, 33, 44],'name':['ming', 'hong',' ke ', 'li']})
df['name'] = df['name'].str.strip()
df['pass'] = df['pass'].astype(str) # 将原来的int类型转换为str类型
6.字段抽取
slice(start, end)函数可完成字段的抽取
# 抽取name字段的前两位
df['name'].str.slice(0, 2)
7.字段拆分
使用split()函数进行字段的拆分, split(pat=None, n = -1, expand=True)函数包含三个参数:
第一个参数则是分隔的字符串, 默认是以空格分隔
第二个参数则是分隔符使用的次数, 默认分隔所有
第三个参数若是True, 则在不同的列展开, 否则以序列的形式显示.
df = pd.DataFrame({"ID": [10, 11, 12],"name": ["Zhao.23","Qian.33","Sun.28" ]})
# 以**.**为分割点
df_new = df['name'].str.split('.', expand=True)
8.字段命名
有两种方式一种是使用rename()函数, 另一种是直接设置columns参数
#df_new = df_new.rename(columns={0:'username', 1:'age'})
df_new.columns = ['username', 'age']
9.字段合并
使用merge函数对字段进行合并
#将pd和pd_new两个表合并
df_up = pd.merge(df, df_new, left_index=True, right_index=True)
10.字段删除
drop函数对字段进行删除
df_up.drop('name', axis =1, inplace = True) # 删除name字段
11.记录的抽取
1)关系运算:df[df.字段名 关系运算符 数值],
df_up['age'] = df_up['age'].astype(int)
print(df_up[df_up.age >25]) # 选取年龄大于25的记录
2)范围运算 :df[df.字段名.between(s1,s2)]
df_up['age'] = df_up['age'].astype(int)
print(df_up[df_up.age.between(20,30)]) # 选取在20到30之间的数据
3)逻辑运算: 与(&) 或(|) 非(not)
df_up[(df_up.age>30) & (df_up.age<40)]
4)字符匹配:df[df.字段名.str.contains(“字符”, case = True, na =False)] contains()函数中case=True表示区分大小写, 默认为True; na = False表示不匹配缺失值.
df_up[df_up.age.str.contains(‘3’, na=False)]
5)缺失值匹配:df[pd.isnull(df.字段名)]找出该字段juy缺失值的记录
df[pd.isnull(df.Age)
12 记录的合并
concat()函数,将两个或者多个数据表的记录合并一起,pandas.concat([df1, df2, df3…])