文件夹参数
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() 函数进行替换,然后再使用上述方法