Pandas 数据清洗常见方法

Posted james-221

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas 数据清洗常见方法相关的知识,希望对你有一定的参考价值。

Pandas 数据清洗常见方法

01 读取数据

df=pd.read_csv(‘文件名称‘)

02 查看数据特征

df.info()

03 查看数据量

df.shape

04 查看各数字类型的统计量

df.describe()

05 去除重复值

df.drop_duplicates(inplace=True)

06 重置索引

data.reset_index(inplace=True,drop=True)

07 查看缺失值信息

data.loc[data[‘列名‘].isnull()]

01 每一列数据的缺失值进行统计

data.isnull().sum()

08 填充缺失值

# 用0填充
data=data.fina(0)
# 将这一列的空值填充为平均值,类型为int类型
df_all[‘列名‘] = df_all.列名.fillna(int(df_all.列名.mean())).astype(‘int‘)

09 查看是否还有空值

data.isnull().any()

10 对某列数据计数统计

data[‘列名‘].value_counts

11 对某列数据计数并排序

data[‘列名‘].value_counts().sort_values()

01 统计店名的销售额,并排序

data.groupby(‘店名‘)[‘销售额‘].sum().sort_values

12 遍历查看数据集所有列的数据类型

cols=df_tm.columns
for col in cols:
	print(col+‘:‘+str(df_tm[col].dtype))

13 转换数据类型

df[‘列名‘]=df.列名.astype(‘int‘)

01 去掉温度列后的℃,并将数据转为int类型

df.loc[:,‘bwendu‘]=df[‘bwendu‘].str.replace(‘℃‘,‘‘).astype(‘int32‘)

02 对某列数据转换类型

data[‘列名‘]=data[‘列名‘].astype(int)

14 删除指定列中有空值的行

mydf.dropna(subset=[‘列名‘],inplace=True)
mysf=mydf.dropna(subset=[‘列名‘])

15 过滤某列中不符合类型的数据

data=data[`data[‘列名‘].isin([‘你好‘])]

16 转换时间格式

例:20110/02/02====》202-02-02

data[‘列名‘]=pd.to_datetime(data)[‘time‘]

17 删除某列

data.drop([‘列名‘],axis=1,inplace=True)

18 重命名列

rename_list={‘原列名1:‘新列名1‘,...}
df.rename(rename_list,axis=1,inplace=True)

19 提取多列数据

df[[‘列1‘,‘列2‘,‘列3‘]]

20 多表合并

df_all=pd.merge(table1,table2,on=‘参照列‘,how=‘inner‘)

21 去除空格

a.replace(‘s+‘,‘‘,regex=True,inplace=True) 

典型案例

01 提取国家和城市,生成新列

技术图片

# ciy: 提取国家和城市
def transform_country(x):
    if ‘中国‘ in x:
        return ‘中国‘
    else:
        return x 
    
def transform_city(x):
    if ‘中国‘ in x:
        return x[2:]
    else:
        return x 

df_all[‘country‘] = df_all.city.map(lambda x: transform_country(x))
df_all[‘city‘] = df_all.city.map(lambda x: transform_city(x))

技术图片

02 提取数值

技术图片

# height:提取数值
df_all[‘height‘] = df_all.height.str.extract(‘(d+)‘).astype(‘int‘)
df_all.head(2) 

技术图片

03 提取年龄

技术图片

# age: 提取年龄
df_all[‘age‘] = df_all.age.str.extract(‘.*?s*((.*?)岁)‘).astype(‘float‘)
df_all.head(2)

技术图片04 循环遍历某列所有数据,在后面加上指定字段:

技术图片

data[‘列名‘].apply(lambda x:str(x)+‘天‘)

注释:str(x) 为了将数据转换为字符类型

技术图片

05 提取汉字

技术图片

df4[‘name‘] = df4.name.str.extract(‘([u4e00-u9fa5]+)‘)

技术图片

06 时间索引格式转换为普通列表格式

m3 = data1[‘出发时间‘].value_counts().sort_index()[:]
m4 = m3[‘2020‘].index
n4 = m3[‘2020‘].values.tolist()
# 将其转化为时间格式的数组
a1 = m4.to_pydatetime()
# 时间转换成以下格式
a2 = np.vectorize(lambda s: s.strftime(‘%Y-%m-%d‘))(a1)

a3 = pd.Series(a2).tolist

输出m4,如下图所示

技术图片

输出a1,如下

技术图片

输出a2 ,如下

技术图片

输出a3,如下

技术图片

以上是关于Pandas 数据清洗常见方法的主要内容,如果未能解决你的问题,请参考以下文章

学习pandas全套代码超详细数据查看输入输出选取集成清洗转换重塑数学和统计方法排序

2.pandas数据清洗

Pandas常用的数据清洗方法

Pandas数据清洗方法

Pandas数据清洗方法

pandas常用数据清洗方法