如何对Excel文件里面每列数据单独进行数据清洗,清洗完成后进行描述性统计?

第一步:如何进行读取Excel文件里面,把非索引列的所有数据清洗去除0值、空值、和偏离比较大的值?先进行数据清洗对比:

import pandas as pd

# 1. 读取Excel文件
file_path = "C:\Users\Username\Documents\file.xlsx" # 替换成你的读取指定文件夹下文件,Windows电脑格式

file_path = "/Users/Username/Documents/file.xlsx "  # 替换成你的读取指定文件夹下文件,Mac电脑和Unix/Linux格式,以上两段代码二选一


sheet_name = 'Sheet1'

df = pd.read_excel(file_path, sheet_name=sheet_name)

# 2. 数据清洗,对除第一列以外的每一列进行独立数据清洗
cleaned_data = {}

for col in df.columns[1:]:
    original_data = df[col].copy()  # 复制原始数据以展示清洗前后的对比
    # 检查列数据类型是否为数字
    if pd.api.types.is_numeric_dtype(df[col]):
        # 去除负值、0值和空值
        df[col] = df[col][df[col] > 0]
        cleaned_data[col] = {
            'Original Data': original_data,
            'Cleaned Data': df[col]
        }

# 3. 展示每列的清洗前和清洗后数据
for col, data in cleaned_data.items():
    print(f"列名: {col}")
    print(f"清洗前数据:\n{data['Original Data']}\n")
    print(f"清洗后数据:\n{data['Cleaned Data']}\n")
 

第一步:对非索引列的所有列进行单独数据清洗,并进行描述性统计,输出统计结果:

import pandas as pd
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings ("ignore")
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文显示异常

# 去掉警告提示
warnings.filterwarnings("ignore")

# 1. 读取Excel文件
file_path = '/Users/Username/Documents/file.xlsx'
sheet_name = 'Sheet1'

df = pd.read_excel(file_path, sheet_name=sheet_name)

# 2. 数据清洗,对除第一列以外的每一列进行独立数据清洗
for col in df.columns[1:]:
    # 去除0值
    df = df[df[col] > 0]

    # 去除空值
    df = df.dropna()

    # 去除负值
    df = df[df[col] >= 0]

    # 使用箱线图去除偏离很大的数值
    def remove_outliers(column):
        Q1 = column.quantile(0.25)
        Q3 = column.quantile(0.75)
        IQR = Q3 - Q1
        lower_bound = Q1 - 1.5 * IQR
        upper_bound = Q3 + 1.5 * IQR
        return column[(column >= lower_bound) & (column <= upper_bound)]

    df[col] = remove_outliers(df[col])

    # 使用科学计算去除偏离特别大的数值(根据需要自行实现)

# 3. 描述性统计并保留两位小数
statistics = df.describe().round(2)

# 4. 输出统计信息
print(statistics)

# 5. 如果需要,将统计信息保存到一个新的Excel文件中
statistics.to_excel('/Users/Username/Documents/描述性统计结果.xlsx) #注意这段代码MAC电脑和Windows电脑的区别

# 6. 绘制箱线图,旋转横坐标文字
plt.figure(figsize=(12, 6))
boxplot = df.boxplot(rot=90)  # 旋转横坐标文字为垂直方向
plt.title('箱线图')
plt.xlabel('列名')
plt.ylabel('值')
plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值