上一篇
Python数据分析基础统计教程 - 从入门到实践
- Python
- 2025-08-13
- 1414
Python数据分析基础统计教程
使用Pandas、NumPy和Matplotlib进行数据探索与统计分析
DS
数据分析师
最后更新: 2023年10月15日 · 阅读时间: 10分钟
1. Python数据分析简介
Python已成为数据科学领域的主流语言,这得益于其丰富的库生态系统和简洁的语法。在数据分析领域,Python提供了强大的工具集,能够高效地进行数据清洗、转换、统计分析和可视化。
核心优势:
- Pandas - 数据处理和分析的核心库,提供DataFrame数据结构
- NumPy - 科学计算基础库,支持大型多维数组和矩阵运算
- Matplotlib/Seaborn - 数据可视化工具,创建高质量统计图表
- SciPy - 科学计算库,包含统计、优化等模块
2. 环境配置与库安装
开始之前,确保已安装Python(推荐3.8+版本)。使用pip安装所需库:
# 安装核心数据分析库
pip install pandas numpy matplotlib seaborn scipy
# 安装Jupyter Notebook(可选但推荐)
pip install jupyterlab
在Python脚本或Jupyter Notebook中导入常用库:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 设置图表在Notebook中直接显示
%matplotlib inline
3. 数据加载与查看
Pandas支持多种数据格式的读取,包括CSV、Excel、JSON、SQL数据库等。
3.1 加载CSV数据
# 读取CSV文件
df = pd.read_csv('sales_data.csv')
# 显示前5行
print(df.head())
3.2 数据概览
# 显示数据基本信息
df.info()
# 统计描述(数值型列)
print(df.describe())
# 查看列名
print(df.columns)
# 查看数据维度
print(f"数据集形状: {df.shape}")
4. 数据清洗与预处理
数据清洗是数据分析的关键步骤,确保数据质量。
4.1 处理缺失值
# 检查缺失值
print(df.isnull().sum())
# 填充缺失值
df['Price'].fillna(df['Price'].mean(), inplace=True)
# 删除包含缺失值的行
df.dropna(subset=['CustomerID'], inplace=True)
4.2 处理重复值
# 检查重复行
print(f"重复行数: {df.duplicated().sum()}")
# 删除重复行
df.drop_duplicates(inplace=True)
4.3 数据类型转换
# 转换日期列
df['OrderDate'] = pd.to_datetime(df['OrderDate'])
# 转换分类数据
df['Category'] = df['Category'].astype('category')
5. 基础统计分析
使用Pandas和NumPy进行基础统计分析。
5.1 描述性统计
# 数值列的统计摘要
stats = df.describe()
print(stats)
# 特定统计量
print(f"平均值: {df['Price'].mean()}")
print(f"中位数: {df['Price'].median()}")
print(f"标准差: {df['Price'].std()}")
print(f"最小值: {df['Price'].min()}")
print(f"最大值: {df['Price'].max()}")
print(f"四分位数: \n{df['Price'].quantile([0.25, 0.5, 0.75])}")
5.2 分组统计
# 按类别分组统计
category_stats = df.groupby('Category')['Price'].agg(['sum', 'mean', 'count'])
print(category_stats)
# 多维度分组
region_category = df.groupby(['Region', 'Category'])['Sales'].mean().unstack()
print(region_category)
5.3 相关性与协方差
# 计算相关系数矩阵
correlation_matrix = df[['Price', 'Quantity', 'Sales']].corr()
print(correlation_matrix)
# 单个相关系数
corr_price_sales = df['Price'].corr(df['Sales'])
print(f"价格与销售额相关系数: {corr_price_sales:.2f}")
# 协方差矩阵
cov_matrix = df[['Price', 'Sales']].cov()
print(cov_matrix)
6. 数据可视化
使用Matplotlib和Seaborn创建信息丰富的图表。
6.1 直方图 - 分布分析
plt.figure(figsize=(10, 6))
sns.histplot(df['Price'], bins=30, kde=True)
plt.title('价格分布直方图')
plt.xlabel('价格')
plt.ylabel('频数')
plt.show()
6.2 箱线图 - 异常值检测
plt.figure(figsize=(10, 6))
sns.boxplot(x='Category', y='Sales', data=df)
plt.title('不同类别销售额分布')
plt.xticks(rotation=45)
plt.show()
6.3 散点图 - 关系分析
plt.figure(figsize=(10, 6))
sns.scatterplot(x='Price', y='Sales',
hue='Category', data=df)
plt.title('价格与销售额关系')
plt.grid(True)
plt.show()
6.4 条形图 - 类别比较
plt.figure(figsize=(10, 6))
category_sales = df.groupby('Category')['Sales'].sum().sort_values()
category_sales.plot(kind='barh')
plt.title('各类别总销售额')
plt.xlabel('销售额')
plt.ylabel('类别')
plt.show()
7. 进阶分析技巧
7.1 时间序列分析
# 将日期设为索引
df.set_index('OrderDate', inplace=True)
# 按月重采样
monthly_sales = df['Sales'].resample('M').sum()
# 绘制时间序列图
plt.figure(figsize=(12, 6))
monthly_sales.plot()
plt.title('月度销售额趋势')
plt.ylabel('销售额')
plt.grid(True)
plt.show()
7.2 数据透视表
pivot_table = pd.pivot_table(df,
values='Sales',
index='Region',
columns='Category',
aggfunc='sum',
fill_value=0)
print(pivot_table)
7.3 假设检验示例
from scipy import stats
# 提取两个类别的数据
cat1 = df[df['Category'] == 'Electronics']['Sales']
cat2 = df[df['Category'] == 'Clothing']['Sales']
# 独立样本t检验
t_stat, p_value = stats.ttest_ind(cat1, cat2)
print(f"T统计量: {t_stat:.2f}")
print(f"P值: {p_value:.4f}")
# 结果解读
alpha = 0.05
if p_value < alpha:
print("拒绝原假设:两个类别的销售额有显著差异")
else:
print("无法拒绝原假设:没有足够证据表明销售额有显著差异")
🎯 关键要点总结
数据清洗
处理缺失值和异常值是可靠分析的基础
描述性统计
describe()方法提供数据集的快速概览
分组分析
groupby()揭示不同类别的模式差异
数据可视化
图表比数字更直观地展示数据洞察
本文由DuYue于2025-08-13发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20258050.html
发表评论