python 读取文件夹下所有 csv xls xlsx文件 并简单清洗数据 保存到 dataframe 中

文件夹参数

path_list 要读取的文件夹列表

导包

import pandas as pd
import os
没有的话直接pip下载就行
pip install pandas
pip install os

  • 读取单个文件夹下所有文件
path = 'D:/XXXXX'   #文件夹路径
data_train = pd.DataFrame()
listFiles = os.listdir(path)
for i in files:
    if (i[-3:] == 'csv'):
        data_tmp = pd.read_csv(path + '/' + i, engine='python', encoding='utf-8')
    else:
        data_tmp = pd.read_excel(path + '/' + i)
    data_tmp ['index']= data_tmp ['index'].fillna(data_tmp ['index'].mode()[0])  #众数替换nan
    # data_tmp ['index'] = data_tmp ['index'].fillna(pd['index'].mean())  # 平均数替换nan
    # data_tmp ['index'] = data_tmp ['index'].fillna(0) # 用0替换nan
                
    data_train = data_train.append(data_tmp)
  • 读取多个文件夹
# 读取多个文件夹
path_list = ["文件夹1","文件夹2"]
    # test_file_path = "C:xxx.csv" #测试集文件路径,这里不需要
    data_train = pd.DataFrame()
    for path in path_list:
        for root, dirs, files in os.walk(path):
            print(files)
            for i in files:
                if (i[-3:] == 'csv'):
                    data_tmp = pd.read_csv(path + '/' + i, engine='python', encoding='utf-8')
                else:
                    data_tmp = pd.read_excel(path + '/' + i)
                data_tmp ['index']= data_tmp ['index'].fillna(data_tmp ['index'].mode()[0])  #众数替换nan
                # data_tmp ['index'] = data_tmp ['index'].fillna(pd['index'].mean())  # 平均数替换nan
                # data_tmp ['index'] = data_tmp ['index'].fillna(0) # 用0替换nan
                
                data_train = data_train.append(data_tmp)

data_train 即为所有文件数据

数据清洗

检查缺失值

data.isnull().sum()  #可以统计每列缺失值总数

缺失值处理

# nan数据处理
# 以固定值替换
data.fillna('0')  #这里以0来替换nan数据

# 针对某一缺失列进行替换

data['aaa'] = data['aaa'].fillna('0')  #用0来替换aaa列中的nan数据


使用众数 平均数 中位数 插值函数 横向/纵向前面的数据 进行替换

# 众数
data['aaa'] = data['aaa'].fillna(data['aaa'].mode())

# 平均数
data['aaa'] = data['aaa'].fillna(data['aaa'].mean())

# 中位数
data['aaa'] = data['aaa'].fillna(data['aaa'].median())

# 插值函数  据框中缺失值上下的数字平均值
data['aaa'] = data['aaa'].fillna(data['aaa'].interpolate())

# 横向(行)前面的值替换
data = data.fillna(axis=1, method='ffill')

# 纵向(列)前面的值替换
data = data.fillna(axis=1, method='ffill')

直接删除缺失值所在行

data = data.dropna()

指定删除某列的缺失值所在行

data = data.dropna(subset=['score'])

处理非标准缺失值

可以先使用 data.replace() 函数进行替换,然后再使用上述方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值