用Python做数据分析:5个实战案例

适合读者:有一定Python基础,想学习数据分析的读者。


一、工具准备

  • Python 3.x
  • Jupyter Notebook(推荐用于交互式分析)
  • Pandas:数据处理与分析
  • MatplotlibSeaborn:数据可视化

安装方法:

bash 复制代码
pip install jupyter pandas matplotlib seaborn

二、实战案例

案例1:销售数据趋势分析(Pandas分组统计)

目标:分析某产品每月销售额趋势。

示例数据:

python 复制代码
import pandas as pd
# 直接用字典模拟数据
sales_data = {
    'date': ['2023-01-05', '2023-01-15', '2023-02-10', '2023-02-20', '2023-03-05'],
    'product': ['A', 'A', 'A', 'A', 'A'],
    'sales': [120, 150, 200, 180, 210]
}
sales = pd.DataFrame(sales_data)
sales['date'] = pd.to_datetime(sales['date'])
sales['month'] = sales['date'].dt.to_period('M')
monthly_sales = sales.groupby('month')['sales'].sum().reset_index()
print(monthly_sales)

结果解读:

  • 输出每月总销售额,可用于趋势分析和后续可视化。

案例2:用户行为数据可视化(Matplotlib绘制折线图/柱状图)

目标:展示网站每日活跃用户(DAU)变化。

示例数据:

python 复制代码
import pandas as pd
import matplotlib.pyplot as plt
# 设置中文字体(替换为你的系统支持的字体名)
plt.rcParams['font.sans-serif'] = ['SimHei']  # Windows
# plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']  # Mac
# plt.rcParams['font.sans-serif'] = ['WenQuanYi Zen Hei']  # Linux
# 解决负号显示问题
plt.rcParams['axes.unicode_minus'] = False  
# 用字典模拟数据
user_data = pd.DataFrame({
    'date': pd.date_range('2023-01-01', periods=7),
    'dau': [320, 400, 380, 420, 390, 410, 430]
})
plt.figure(figsize=(10, 5))
plt.plot(user_data['date'], user_data['dau'], marker='o', label='DAU')
plt.title('每日活跃用户趋势')
plt.xlabel('日期')
plt.ylabel('活跃用户数')
plt.legend()
plt.grid(True)
plt.show()

结果解读:

  • 折线图直观展示了活跃用户的波动和趋势,便于发现高峰和低谷。

案例3:电影评分数据探索(Seaborn热力图分析相关性)

目标:探索不同电影特征(如评分、时长、票房)之间的相关性。

示例数据:

python 复制代码
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 用字典模拟数据
movies = pd.DataFrame({
    'title': ['Movie A', 'Movie B', 'Movie C', 'Movie D'],
    'rating': [8.2, 7.5, 6.8, 8.0],
    'duration': [120, 95, 110, 130],
    'box_office': [1.5e8, 8.0e7, 6.5e7, 2.0e8]
})
correlation = movies[['rating', 'duration', 'box_office']].corr()
plt.figure(figsize=(6, 4))
sns.heatmap(correlation, annot=True, cmap='YlGnBu')
plt.title('电影特征相关性热力图')
plt.show()

结果解读:

  • 热力图展示了各特征之间的相关性(如评分与票房、时长与票房等),有助于发现潜在的影响关系。

案例4:社交媒体文本情感分析(简单NLP示例)

目标:对社交媒体评论进行情感极性分类(正面/负面)。

示例数据:

python 复制代码
import pandas as pd
from textblob import TextBlob
# 用字典模拟数据
comments = pd.DataFrame({
    'comment': [
        'I love this product!',
        'Terrible experience...',
        'Not bad, could be better.',
        'Absolutely fantastic!',
        'Worst service ever.'
    ]
})
def get_sentiment(text):
    return TextBlob(str(text)).sentiment.polarity
comments['sentiment'] = comments['comment'].apply(get_sentiment)
print(comments[['comment', 'sentiment']])

结果解读:

  • sentiment 值大于0为正面,小于0为负面,等于0为中性。可据此统计正负面评论比例。

案例5:预测模型入门(线性回归预测房价)

目标:用线性回归模型预测房价。

示例数据:

python 复制代码
import pandas as pd
from sklearn.linear_model import LinearRegression
# 用字典模拟数据
house = pd.DataFrame({
    'area': [80, 120, 100, 90, 110],
    'bedrooms': [2, 3, 2, 1, 3],
    'price': [500, 800, 650, 480, 780]
})
X = house[['area', 'bedrooms']]
y = house['price']
model = LinearRegression()
model.fit(X, y)
pred = model.predict([[100, 2]])
print(f"预测100平米2居室房价:{pred[0]:.2f}")

结果解读:

  • 通过输入面积和卧室数,模型可预测房价,实现数据驱动的房产估价。

总结:Python在数据分析中的优势

  • 生态丰富,工具链完善(Pandas、Matplotlib、Seaborn、Scikit-learn等)。
  • 代码简洁,易于上手,适合快速原型开发和数据探索。
  • 社区活跃,资料丰富,适合自学和进阶。

以上5个案例涵盖了数据分析的常见场景,建议读者动手实践、结合自己的数据进行深入探索。

相关推荐
金銀銅鐵5 分钟前
[Python] 体验用欧几里得算法计算最大公约数的过程
python·数学
FreakStudio4 小时前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
用户0332126663675 小时前
使用 Python 从零创建 Word 文档
python
Csvn10 小时前
Python 两大经典坑点 —— 可变默认参数 & 闭包延迟绑定
后端·python
曲幽11 小时前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
用户5569188175312 小时前
#从脚本到独立程序:Python + Playwright 批量抓取的完整踩坑记录
python·自动化运维
兵慌码乱1 天前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2
luckdewei1 天前
FastAPI 资产管理系统实战:复杂 ORM 关联、Alembic 迁移与 N+1 查询优化
python
aqi001 天前
15天学会AI应用开发(八)使用向量数据库实现RAG功能
人工智能·python·大模型·ai编程·ai应用