python 基本数据处理

一:面对数据的基本信息处理除了常见的查看数据的缺失情况:
missing_values = data.isnull().sum()
missing_percentage = missing_values / len(data) * 100
print(missing_percentage)

可以也可以做一些数据的直方图

# 单个变量的直方图
data['your_numerical_column'].hist(bins=50)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram of Your Numerical Column')
plt.show()
# 多个变量的直方图
data.hist(bins=50, figsize=(20, 15))
plt.show()
二:异常值处理

对于数值型分类变量,我们关联概率密度函数处理:

sns.kdeplot(data['your_numerical_column'], shade=True)
plt.xlabel('Value')
plt.ylabel('Density')
plt.title('Density Plot of Your Numerical Column')
plt.show()

对于概率分布来讲,我们可以利用统计的规则nσ 原则来进行判断:
3σ原则判断异常值{3σ原则判断异常值}3σ原则判断异常值
对于给定的数据集,首先计算其均值 μ\muμ 和标准差 σ\sigmaσ
μ=1n∑i=1nxi\mu = \frac{1}{n} \sum_{i=1}^{n} x_iμ=n1i=1nxi
σ=1n∑i=1n(xi−μ)2\sigma = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (x_i - \mu)^2}σ=n1i=1n(xiμ)2
上界=μ+3σ\text{上界} = \mu + 3\sigma上界=μ+3σ
下界=μ−3σ\text{下界} = \mu - 3\sigma下界=μ3σ
数据集中任何落在上下界限之外的值都被认为是异常值。如果数据点 xxx 满足以下条件之一:
x>μ+3σ或x<μ−3σx > \mu + 3\sigma \quad \text{或} \quad x < \mu - 3\sigmax>μ+3σx<μ3σ
对应的python脚本:

import numpy as np
# 计算均值和标准差
mean = np.mean(data)
std_dev = np.std(data)
# 计算上下界限
upper_limit = mean + 3 * std_dev
lower_limit = mean - 3 * std_dev

# 判断异常值
outliers = [x for x in data if x > upper_limit or x < lower_limit]

箱线图处理:

import seaborn as sns
sns.boxplot(data['your_numerical_column'])
plt.xlabel('Your Numerical Column')
plt.title('Boxplot of Your Numerical Column')
plt.show()

我们根据数据的箱线分布找出数据的异常值,对异常值进行抛除。

三:完成异常值的处理后,我们需要拉平量纲的影响,对数据进行对数转换或者min-max归一化处理

对数转换要注意,这里只能进行正值处理
import numpy as np

# 示例数据集
data = np.array([0, 1, 2, 3, 4, 5])

# 对数转换,使用平移操作避免零或负数
log_transformed_data = np.log(data + 1)

print("原始数据:", data)
print("对数转换后的数据:", log_transformed_data)

data+1代表数据平移,防止数值0的影响
Min-Max归一化的公式如下:
x′=x−min⁡(x)max⁡(x)−min⁡(x)x' = \frac{x - \min(x)}{\max(x) - \min(x)}x=max(x)min(x)xmin(x)
如果需要将数据归一化到 [a, b] 范围,可以使用以下公式:
x′=a+(x−min⁡(x))⋅(b−a)max⁡(x)−min⁡(x)x' = a + \frac{(x - \min(x)) \cdot (b - a)}{\max(x) - \min(x)}x=a+max(x)min(x)(xmin(x))(ba)

import numpy as np

# 示例数据集
data = np.array([5, 10, 15, 20, 25])

# 计算最小值和最大值
min_val = np.min(data)
max_val = np.max(data)

# 应用Min-Max归一化公式
normalized_data = (data - min_val) / (max_val - min_val)

print("原始数据:", data)
print("归一化后的数据:", normalized_data)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值