Python 30 天实战:数据分析实战全流程
在前面的学习中,我们已经分别掌握了 NumPy、Pandas 和 Matplotlib 这三个强大库的基础及部分进阶知识,今天我们将迎来一个综合性的实战练习,通过对真实世界数据集的处理、分析与可视化,将所学知识融会贯通,真正体验数据分析在实际场景中的完整流程以及强大作用。
一、项目准备
首先,我们需要获取一个真实世界的数据集,这里以股票价格数据为例(你可以从财经网站下载相关的 CSV 格式数据,或者使用一些公开可用的数据集)。假设我们的数据集包含日期、开盘价、最高价、最低价、收盘价等字段,类似如下格式(简略示例):
日期 | 开盘价 | 最高价 | 最低价 | 收盘价 |
2024-01-01 | 100.00 | 105.00 | 98.00 | 102.00 |
2024-01-02 | 102.00 | 108.00 | 100.00 | 106.00 |
... | ... | ... | ... | ... |
二、数据读取与初步查看
- 使用 Pandas 读取数据:
import pandas as pd
df = pd.read_csv('stock_prices.csv') # 根据实际文件名进行调整
print(df.head()) # 查看数据的前几行,初步了解数据结构和内容
通过 read_csv 函数将数据读取到 DataFrame 中,并使用 head() 方法查看前几行数据,确认数据是否正确加载以及各列的大致情况。
三、数据清洗与转换
- 检查并处理缺失值:
# 检查每列是否存在缺失值
print(df.isnull().sum())
# 可以根据实际情况选择合适的方式处理缺失值,比如删除含有缺失值的行
cleaned_df = df.dropna()
使用 isnull().sum() 方法统计每列缺失值的数量,然后根据业务场景决定是删除含有缺失值的行、填充特定值还是采用其他处理策略,这里简单演示了删除含有缺失值行的操作,得到 cleaned_df 为清洗后的 DataFrame。
- 数据类型转换(如果需要):
例如,如果日期列被识别为字符串类型,而我们后续想基于日期进行时间序列相关操作,就需要将其转换为日期时间类型:
cleaned_df['日期'] = pd.to_datetime(cleaned_df['日期'])
通过 to_datetime 函数将日期列转换为合适的日期时间类型,便于后续按时间维度进行分析。
四、数据统计分析
- 使用 NumPy 和 Pandas 计算统计指标:
import numpy as np
# 计算收盘价的平均值
average_close_price = np.mean(cleaned_df['收盘价'])
print(f"平均收盘价:{average_close_price}")
# 计算最高价与最低价的差值(波动范围)
price_range = cleaned_df['最高价'] - cleaned_df['最低价']
print(f"价格波动范围(平均):{np.mean(price_range)}")
# 使用 Pandas 自带的统计方法,如计算标准差
std_close_price = cleaned_df['收盘价'].std()
print(f"收盘价的标准差:{std_close_price}")
这里借助 NumPy 的函数以及 Pandas 中 Series 的统计方法,计算了如平均收盘价、价格波动范围以及收盘价的标准差等常见统计指标,帮助我们了解股票价格的基本特征。
五、数据可视化
- 绘制股票价格走势折线图(使用 Matplotlib):
import matplotlib.pyplot as plt
plt.plot(cleaned_df['日期'], cleaned_df['收盘价'])
plt.title("股票收盘价走势")
plt.xlabel("日期")
plt.ylabel("收盘价")
plt.xticks(rotation=45) # 让 x 轴标签旋转一定角度,避免重叠
plt.show()
通过 plt.plot() 函数,以日期为 x 轴,收盘价为 y 轴绘制折线图,展示股票价格随时间的变化趋势,同时设置好标题、坐标轴标签,并对 x 轴标签进行旋转处理,使其更清晰易读,最后展示图表。
- 分析销售数据的季节性变化(假设数据集包含销售数据且有时间维度,示例思路):
如果我们的数据集是销售数据,并且有按月份等时间周期记录的数据,可以通过以下方式分析季节性变化:
# 提取销售数据中的月份信息(假设日期列已为日期时间类型)
cleaned_df['月份'] = cleaned_df['日期'].dt.month
# 按月份分组并计算每月销售额总和(假设存在销售额列)
monthly_sales = cleaned_df.groupby('月份')['销售额'].sum()
# 绘制柱状图展示季节性变化
plt.bar(monthly_sales.index, monthly_sales.values)
plt.title("销售数据季节性变化")
plt.xlabel("月份")
plt.ylabel("销售额")
plt.show()
先从日期列中提取出月份信息,然后按照月份对销售额进行分组求和,得到每月的销售总额数据,最后使用柱状图展示出来,以便直观地观察销售数据在不同月份的高低变化,分析季节性特征。
通过这个综合练习,我们完整地体验了从真实数据集的读取、清洗、分析到可视化展示的数据分析全流程。在实际应用中,你可以根据不同的数据集和分析目标,灵活运用所学的这些库以及相关方法,深入挖掘数据背后的价值,为决策提供有力支持。
#数据分析实战# #Python 综合应用# #数据处理与可视化# #真实数据集分析# #NumPy 应用# #Pandas 应用# #Matplotlib 应用#