当前位置: 首页 > article >正文

Python数据分析之数据处理与分析

Python 数据分析重点知识点

本系列不同其他的知识点讲解,力求通过例子让新同学学习用法,帮助老同学快速回忆知识点

可视化系列:

  1. Python基础
  2. 数据分析工具
  3. 数据处理与分析
  4. 数据可视化
  5. 机器学习基础
三、数据处理与分析
  • 数据清洗
    • 处理缺失值(删除、填充)、异常值(识别、处理),数据标准化、归一化等。
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler, MinMaxScaler

# 创建示例数据 
#一般是.csv文件或者.xls文件,这里为了清楚直接写了两行数据
data = {
    'Age': [25, 30, 45, np.nan, 60, 70, 80],
    'Salary': [50000, 60000, 120000, 150000, 180000, np.nan, 210000]
}
df = pd.DataFrame(data)

# 处理缺失值
# 删除含有NaN的行
df_dropped = df.dropna()

# 填充缺失值,这里我们用平均值填充
df_filled = df.fillna(df.mean())

# 数据标准化
scaler = StandardScaler()
df_standardized = df_filled.copy()
df_standardized[['Age', 'Salary']] = scaler.fit_transform(df_filled[['Age', 'Salary']])

# 数据归一化
min_max_scaler = MinMaxScaler()
df_normalized = df_filled.copy()
df_normalized[['Age', 'Salary']] = min_max_scaler.fit_transform(df_filled[['Age', 'Salary']])

print("原始数据:\n",df)
print("\n删除缺失值后的数据:\n",df_dropped)
print("\n填充缺失值后的数据:\n",df_filled)
print("\n标准化后的数据:\n",df_standardized)
print("\n归一化后的数据:\n",df_normalized)
  • 数据探索
    • 通过统计方法和可视化手段了解数据特征和分布。
import pandas as pd
import matplotlib.pyplot as plt

data = {'Age': [25, 30, 45, 60, 70, 80],
        'Salary': [50000, 60000, 120000, 180000, None, 210000]}
df = pd.DataFrame(data)
print(df.describe())

plt.figure(figsize=(10, 5))

# 绘制年龄的直方图
plt.subplot(1, 2, 1) #可以设置多个子图,表示一行两列的第一个图
plt.hist(df['Age'], bins=5, color='blue', alpha=0.7)
plt.title('Age Distribution')
plt.xlabel('Age')
plt.ylabel('Frequency')

# 绘制薪水的直方图
plt.subplot(1, 2, 2) #表示一行两列的第二个图
plt.hist(df['Salary'].dropna(), bins=5, color='green', alpha=0.7)
plt.title('Salary Distribution')
plt.xlabel('Salary')
plt.ylabel('Frequency')

# 当你使用 plt.subplot() 创建多个子图时,默认情况下,子图可能会彼此重叠或与边缘过于接近,这会影响图形的可读性。
# 调用 plt.tight_layout() 后,Matplotlib 会自动调整子图的布局,使得它们更加整洁和易于阅读。
plt.tight_layout()
plt.show()

在这里插入图片描述

  • 数据转换
    • 数据类型转换、数据重塑(pivot、melt 等函数),特征工程(创建新特征、特征选择)。
import pandas as pd
import numpy as np

# 创建示例数据集
data = {
    'Date': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04'],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston'],
    'Temperature': [32, 75, 68, 85],
    'Humidity': [85, 60, 70, 90]
}
df = pd.DataFrame(data)
print("原始数据:")
print(df)

# 转换日期列为日期时间类型
df['Date'] = pd.to_datetime(df['Date'])

# 转换温度和湿度列为浮点数类型
df['Temperature'] = df['Temperature'].astype(float)
df['Humidity'] = df['Humidity'].astype(float)

print("\n数据类型转换后的数据:")
print(df.dtypes)

# 使用pivot函数重塑数据,意思就是指定数据的行和列
df_pivot = df.pivot(index='City', columns='Date', values='Temperature')
print("\n数据重塑后的数据 (pivot):")
print(df_pivot)

# 使用melt函数重塑数据
df_melt = pd.melt(df_pivot.reset_index(), id_vars=['City'], var_name='Date', value_name='Temperature')
print("\n数据重塑后的数据 (melt):")
print(df_melt)

# 创建新特征:温度的平方
df['Temperature_Squared'] = df['Temperature'] ** 2
print("\n添加新特征后的数据:")
print(df)

# 选择特定的列作为新的特征集
selected_features = df[['City', 'Temperature', 'Humidity']]
print("\n特征选择后的数据:")
print(selected_features)

关于pivot和melt的区别,请先看以上的运行结果然后再理解会更加清楚

  • pivot:

    • index:指定作为新表格行索引的列。

    • columns:指定作为新表格列索引的列。

    • values:指定在新表格中填充数据的列。

  • melt:

    • id_vars:指定在转换过程中保留的列。

    • value_vars:指定要合并的列。

    • var_name:指定新变量列的名称。

    • value_name:指定新值列的名称。


http://www.kler.cn/a/580871.html

相关文章:

  • 修改 Docker 网桥的 IP 范围
  • Oracle RAC配置原理详解:构建高可用与高性能的数据库集群
  • HTML 超链接(简单易懂较详细)
  • NO.29十六届蓝桥杯备战|string九道练习|reverse|翻转|回文(C++)
  • AI算法与应用 全栈开发 前端开发 后端开发 测试开发 运维开发
  • 【阿里云】操作系统控制台——体验与测评
  • c#面试题整理3
  • 探索高性能AI识别和边缘计算 | NVIDIA Jetson Orin Nano 8GB 开发套件的全面测评
  • FreeRTOS第18篇:FreeRTOS链表实现细节06_遍历指针(pxIndex)与调度器的高效协同
  • 2路模拟量同步输出卡、任意波形发生器卡—PCIe9100数据采集卡
  • Flutter中网络图片加载显示Image.network的具体用法
  • [免费]微信小程序(图书馆)自习室座位预约管理系统(SpringBoot后端+Vue管理端)(高级版)【论文+源码+SQL脚本】
  • Vue前端开发-Coupon组件
  • 时序数据库 InfluxDB 3.0 版本性能实测报告:写入吞吐量提升效果验证
  • 鸿蒙跨平台框架ArkUI-X
  • 后 Safe 时代:多签钱包安全新范式与防范前端攻击的新思路
  • Windows控制台函数:设置文字颜色样式函数SetConsoleTextAttribute()
  • SQL 窗口函数之lead() over(partition by ) 和 lag() over(partition by )
  • 批量将 Excel 转换 PDF/Word/CSV以及图片等其它格式
  • 手写Tomcat