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

news/2025/3/11 7:36:19/

Python 数据分析重点知识点

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

  1. Python基础
  2. 数据分析工具
  3. 数据处理与分析
  4. 数据可视化
  5. 机器学习基础
三、数据处理与分析
  • 数据清洗
    • 处理缺失值(删除、填充)、异常值(识别、处理),数据标准化、归一化等。
python">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)
  • 数据探索
    • 通过统计方法和可视化手段了解数据特征和分布。
python">import pandas as pd
import matplotlib.pyplot as pltdata = {'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 等函数),特征工程(创建新特征、特征选择)。
python">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.ppmy.cn/news/1578285.html

相关文章

Spring 通过配置注解实现 AOP

在编写代码的过程中出现了这样的错误: Exception in thread "main" org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named studentServiceImpl is expected to be of type com.service.impl.StudentServiceImpl but was actua…

ASP.NET CORE MVC EF框架

1.一个视图中的多个表单Form中的变量。 方式一:视图中跨Form变量不能用,得各自定义变量否则编译不能通过。变量名还不能相同。 或者方式二:在Form之外定义变量 {ViewData["Title"] "ExpenseForm"; }  {L…

图解JVM - 19.JVM监控及诊断工具-命令行篇

1. 概述 在JVM性能调优和故障排查中,命令行工具是开发运维人员最锋利的"手术刀"。如图1所示,这些工具可以分为三类: 核心工具家族: 进程定位:jps运行时监控:jstat参数管理:jinfo内存…

C++11新特性 13.共享智能指针shared_ptr

目录 一.基础介绍 1.基本概念 用途 2.语法 二.使用示例 示例1:基本使用 示例2:循环引用与解决方案 示例3:多线程安全示例 三.使用场景 1.对象需要在多个地方共享时 2. 在容器中存储指针时 3.解决异步编程中的生命周期问题 4.在…

两江产业集团董事长李克伟率团考察深兰科技,推动熊猫汽车与机器人板块落地重庆

2025年3月7日,重庆两江产业集团董事长李克伟率团来到深兰科技集团上海总部考察调研,并与深兰科技集团创始人、董事长陈海波等集团管理层座谈交流,双方围绕西南地区AI产业基地共建、自动驾驶汽车制造、智能机器人研发及产业协同等领域的合作展…

【C++基础二】缺省参数和函数重载

【C基础二】缺省参数和函数重载 1.缺省参数1.1全缺省1.2半缺省 2.什么是函数重载3.不同类型的函数重载4.为什么C支持函数重载而C语言不支持 1.缺省参数 缺省参数是声明或定义函数时,为函数的参数指定一个缺省值,在调用该函数时,若没有指定的实…

RAG助力机器人场景理解与具身操作!EmbodiedRAG:基于动态三维场景图检索的机器人任务规划

作者:Meghan Booker, Grayson Byrd, Bethany Kemp, Aurora Schmidt, Corban Rivera单位:约翰霍普金斯大学论文标题:EmbodiedRAG: Dynamic 3D Scene Graph Retrieval for Efficient and Scalable Robot Task Planning论文链接:http…

NFS,Nginx综合实验

1.实验要求 配置NFS服务器作为 ngxin 服务的存储目录,并在目录中创建 index.html 文件,当访问 http://你的IP 地址时,可以成功显示 index.html 文件的内容。 | 角色 | 软件 | IP | 主机名 | 系统 | | NFS服务器 | nfs-utils | 192.168.72.7…