前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pandas数据清洗详细教程_excel数据清洗工具

pandas数据清洗详细教程_excel数据清洗工具

作者头像
全栈程序员站长
发布2022-10-04 16:23:36
1K0
发布2022-10-04 16:23:36
举报

大家好,又见面了,我是你们的朋友全栈君。

Pandas 数据清洗常见方法

01 读取数据

代码语言:javascript
复制
df=pd.read_csv('文件名称')

02 查看数据特征

代码语言:javascript
复制
df.info()

03 查看数据量

代码语言:javascript
复制
df.shape

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

代码语言:javascript
复制
df.describe()

05 去除重复值

代码语言:javascript
复制
df.drop_duplicates(inplace=True)

06 重置索引

代码语言:javascript
复制
data.reset_index(inplace=True,drop=True)

07 查看缺失值信息

代码语言:javascript
复制
data.loc[data['列名'].isnull()]
01 每一列数据的缺失值进行统计
代码语言:javascript
复制
data.isnull().sum()

08 填充缺失值

代码语言:javascript
复制
# 用0填充
data=data.fina(0)
代码语言:javascript
复制
# 将这一列的空值填充为平均值,类型为int类型
df_all['列名'] = df_all.列名.fillna(int(df_all.列名.mean())).astype('int')

09 查看是否还有空值

代码语言:javascript
复制
data.isnull().any()

10 对某列数据计数统计

代码语言:javascript
复制
data['列名'].value_counts

11 对某列数据计数并排序

代码语言:javascript
复制
data['列名'].value_counts().sort_values()
01 统计店名的销售额,并排序
代码语言:javascript
复制
data.groupby('店名')['销售额'].sum().sort_values

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

代码语言:javascript
复制
cols=df_tm.columns
for col in cols:
	print(col+':'+str(df_tm[col].dtype))

13 转换数据类型

代码语言:javascript
复制
df['列名']=df.列名.astype('int')
01 去掉温度列后的℃,并将数据转为int类型
代码语言:javascript
复制
df.loc[:,'bwendu']=df['bwendu'].str.replace('℃','').astype('int32')
02 对某列数据转换类型
代码语言:javascript
复制
data['列名']=data['列名'].astype(int)

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

代码语言:javascript
复制
mydf.dropna(subset=['列名'],inplace=True)
mysf=mydf.dropna(subset=['列名'])

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

代码语言:javascript
复制
data=data[`data['列名'].isin(['你好'])]

16 转换时间格式

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

代码语言:javascript
复制
data['列名']=pd.to_datetime(data)['time']

17 删除某列

代码语言:javascript
复制
data.drop(['列名'],axis=1,inplace=True)

18 重命名列

代码语言:javascript
复制
rename_list={ 
   '原列名1:'新列名1',...}
df.rename(rename_list,axis=1,inplace=True)

19 提取多列数据

代码语言:javascript
复制
df[['列1','列2','列3']]

20 多表合并

代码语言:javascript
复制
df_all=pd.merge(table1,table2,on='参照列',how='inner')

21 去除空格

代码语言:javascript
复制
a.replace('\s+','',regex=True,inplace=True) 

典型案例

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

image-20201021111102299
image-20201021111102299
代码语言:javascript
复制
# 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))
image-20201021111204599
image-20201021111204599

02 提取数值

image-20201021111601709
image-20201021111601709
代码语言:javascript
复制
# height:提取数值
df_all['height'] = df_all.height.str.extract('(\d+)').astype('int')
df_all.head(2) 
image-20201021111515109
image-20201021111515109

03 提取年龄

image-20201021111657124
image-20201021111657124
代码语言:javascript
复制
# age: 提取年龄
df_all['age'] = df_all.age.str.extract('.*?\s*\((.*?)岁\)').astype('float')
df_all.head(2)
image-20201021111749780
image-20201021111749780

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

image-20201021151124693
image-20201021151124693
代码语言:javascript
复制
data['列名'].apply(lambda x:str(x)+'天')

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

image-20201021151750560
image-20201021151750560

05 提取汉字

image-20201021151941526
image-20201021151941526
代码语言:javascript
复制
df4['name'] = df4.name.str.extract('([\u4e00-\u9fa5]+)')
image-20201021152010672
image-20201021152010672

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

代码语言:javascript
复制
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,如下图所示

image-20201021153522738
image-20201021153522738

输出a1,如下

image-20201021154325579
image-20201021154325579

输出a2 ,如下

image-20201021154420999
image-20201021154420999

输出a3,如下

image-20201021154449245
image-20201021154449245

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/196401.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月7日 上,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Pandas 数据清洗常见方法
    • 01 读取数据
      • 02 查看数据特征
        • 03 查看数据量
          • 04 查看各数字类型的统计量
            • 05 去除重复值
              • 06 重置索引
                • 07 查看缺失值信息
                  • 08 填充缺失值
                    • 09 查看是否还有空值
                      • 10 对某列数据计数统计
                        • 11 对某列数据计数并排序
                          • 12 遍历查看数据集所有列的数据类型
                            • 13 转换数据类型
                              • 14 删除指定列中有空值的行
                                • 15 过滤某列中不符合类型的数据
                                  • 16 转换时间格式
                                    • 17 删除某列
                                      • 18 重命名列
                                        • 19 提取多列数据
                                          • 20 多表合并
                                            • 21 去除空格
                                            • 典型案例
                                              • 01 提取国家和城市,生成新列
                                                • 02 提取数值
                                                  • 03 提取年龄
                                                    • 05 提取汉字
                                                      • 06 时间索引格式转换为普通列表格式
                                                      领券
                                                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档