【人工智能】数据清洗和预处理

预备知识

读取csv文件:

df = pd.read_csv("song_origin.csv")

pandas选择行或列

选择列

  • 通过列名选择:
    选择名为’column_name’的列

    column_data = df['column_name']  
    
  • 通过列名列表选择:

     subset_df = df[['column1', 'column2', 'column3']]
    
  • 通过列的位置选择(使用iloc):
    选择第1列和第3列(索引从0开始)

    subset_df = df.iloc[:, [0, 2]]
    

选择行

选择索引为’index_name’的行

row_data = df.loc['index_name']  

选择多个行(返回一个DataFrame)

subset_df = df.loc[['index1', 'index2', 'index3']]

选择第1行和第3行(索引从0开始)

subset_df = df.iloc[[0, 2]]

选择’some_column’列值大于some_value的行

subset_df = df[df['some_column'] > some_value]

一 处理数据的缺失值

缺失值的填充策略有很多。
除了在fillna()方法中利用method()方法来指导填充,我们还可以自定义一些填充策略。比如,对于数值型空缺,我们可以使用众数、均值、中位数填充。对于具备时间序列特征的空缺,我们可以使用插值(interpolation)方式来填充。插值是一种离散函数逼近的重要方法,它可通过拟合函数在有限个点处的取值状况,估算出函数在其他点(缺失值)处的近似值。如果是分类数据(即标签)缺失,一种填充策略就是用最常见的类别来填充空缺处,这类似于众数填充。当然,如果在特征参数很完备的情况下,还可以用模型来预测缺失值,然后填充。

① 处理数据集中的缺失值,对于数据集中的缺失值,以其所在列的均值进行填充:

df.fillna(df.mean(),inplace=True)

用每一列的均值来替换DataFrame df 中的所有缺失值,并且这个更改会直接在原始的DataFrame上进行。

inplace=True: 这个参数意味着更改将直接应用于原始的DataFrame df,而不是创建一个新的DataFrame。如果你没有设置inplace=True,那么原始的df将保持不变,默认为False,并且fillna()将返回一个新的、填充了缺失值的DataFrame。

二 处理数据的异常值

② 处理数据集中的异常值,对于 acousticness_yr 列的值大于 1 或小于 0 的进行删除:

df = df.drop(df[(df['acousticness_yr'] >1)|(df['acousticness_yr'] < 0)].index)

三 处理数据的重复行

③ 处理数据集中的重复行,对于数据集中出现多行的相同数据,只保留一行,删除其余重复行:

df = df.drop_duplicates() 

如果只想根据 ‘column1’ 和 ‘column2’ 列来删除重复项,你可以:

df = df.drop_duplicates(subset=['column1', 'column2'])

四 将DataFrame的内容导出到CSV

与read_csv()功能相反的是,to_csv()会将内存数据以CSV格式写入磁盘中保存。

df.to_csv('songs_processed.csv',index=False)

通过设置 index=False,在导出到CSV文件时不包含索引列

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值