目录

二、环境搭建与库安装

三、NumPy:科学计算基础

3.1 数组创建与操作

3.2 数组运算与广播

四、Pandas:数据处理利器

4.1 DataFrame基础操作

4.2 数据清洗与预处理

4.3 数据分组与聚合

五、Matplotlib:数据可视化

5.1 基础图表绘制

5.2 高级可视化技巧

六、实战案例:销售数据分析

6.1 数据准备

6.2 数据分析与可视化

七、性能优化技巧

7.1 向量化操作

7.2 内存优化

八、核心功能对比表

九、总结

十、参考文献


Python作为数据科学领域的主流语言,其强大的数据分析生态系统备受青睐。本文将深入探讨三大核心库:Pandas(数据处理)、NumPy(数值计算)、Matplotlib(数据可视化)的完整使用指南。

二、环境搭建与库安装

首先确保安装必要的库:

# 安装核心数据分析库
pip install pandas numpy matplotlib seaborn jupyter

# 或者使用conda安装
conda install pandas numpy matplotlib

三、NumPy:科学计算基础

3.1 数组创建与操作

import numpy as np

# 创建数组
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.arange(0, 10, 2)  # [0, 2, 4, 6, 8]
arr3 = np.linspace(0, 1, 5)  # [0., 0.25, 0.5, 0.75, 1.]

# 多维数组
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
zeros = np.zeros((3, 3))  # 3x3零矩阵
ones = np.ones((2, 4))    # 2x4单位矩阵

print("数组形状:", arr1.shape)
print("数组维度:", arr1.ndim)

3.2 数组运算与广播

# 基本运算
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

print("加法:", a + b)
print("乘法:", a * b)
print("点积:", np.dot(a, b))

# 广播机制
matrix = np.array([[1, 2, 3], [4, 5, 6]])
result = matrix + np.array([10, 20, 30])  # 广播加法
print("广播结果:\n", result)

四、Pandas:数据处理利器

4.1 DataFrame基础操作

import pandas as pd
import numpy as np

# 创建DataFrame
data = {
    '姓名': ['张三', '李四', '王五', '赵六'],
    '年龄': [25, 30, 35, 28],
    '城市': ['北京', '上海', '广州', '深圳'],
    '薪资': [15000, 20000, 18000, 22000]
}

df = pd.DataFrame(data)
print("原始数据:")
print(df)

4.2 数据清洗与预处理

# 处理缺失值
df_with_na = df.copy()
df_with_na.loc[2, '薪资'] = np.nan

# 填充缺失值
df_filled = df_with_na.fillna({'薪资': df_with_na['薪资'].mean()})
print("填充后数据:")
print(df_filled)

# 数据筛选
high_salary = df[df['薪资'] > 18000]
beijing_people = df[df['城市'] == '北京']

print("高薪资人员:\n", high_salary)
print("北京人员:\n", beijing_people)

4.3 数据分组与聚合

# 按城市分组统计
city_stats = df.groupby('城市').agg({
    '年龄': ['mean', 'min', 'max'],
    '薪资': ['mean', 'sum', 'count']
})

print("城市统计信息:")
print(city_stats)

五、Matplotlib:数据可视化

5.1 基础图表绘制

import matplotlib.pyplot as plt
import seaborn as sns

# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 创建子图
fig, axes = plt.subplots(2, 2, figsize=(12, 10))

# 柱状图
axes[0, 0].bar(df['姓名'], df['薪资'], color='skyblue')
axes[0, 0].set_title('薪资分布')
axes[0, 0].set_ylabel('薪资')

# 饼图
city_count = df['城市'].value_counts()
axes[0, 1].pie(city_count.values, labels=city_count.index, autopct='%1.1f%%')
axes[0, 1].set_title('城市分布')

# 折线图
axes[1, 0].plot(df['姓名'], df['年龄'], marker='o', linestyle='-', color='orange')
axes[1, 0].set_title('年龄趋势')
axes[1, 0].set_ylabel('年龄')

# 散点图
axes[1, 1].scatter(df['年龄'], df['薪资'], alpha=0.7)
axes[1, 1].set_xlabel('年龄')
axes[1, 1].set_ylabel('薪资')
axes[1, 1].set_title('年龄与薪资关系')

plt.tight_layout()
plt.show()

5.2 高级可视化技巧

# 使用Seaborn增强可视化
plt.figure(figsize=(10, 6))

# 箱线图
plt.subplot(1, 2, 1)
sns.boxplot(data=df, x='城市', y='薪资')
plt.title('各城市薪资分布')

# 热力图
plt.subplot(1, 2, 2)
correlation = df[['年龄', '薪资']].corr()
sns.heatmap(correlation, annot=True, cmap='coolwarm')
plt.title('相关性热力图')

plt.tight_layout()
plt.show()

六、实战案例:销售数据分析

6.1 数据准备

# 模拟销售数据
np.random.seed(42)
dates = pd.date_range('2024-01-01', periods=100, freq='D')
sales_data = {
    '日期': dates,
    '产品类别': np.random.choice(['A', 'B', 'C'], 100),
    '销售额': np.random.normal(1000, 200, 100),
    '数量': np.random.randint(1, 50, 100)
}

sales_df = pd.DataFrame(sales_data)
sales_df['销售额'] = sales_df['销售额'].clip(lower=0)  # 确保非负

print("销售数据前5行:")
print(sales_df.head())

6.2 数据分析与可视化

# 按产品类别分析
category_analysis = sales_df.groupby('产品类别').agg({
    '销售额': ['sum', 'mean', 'std'],
    '数量': 'sum'
}).round(2)

print("产品类别分析:")
print(category_analysis)

# 时间序列分析
sales_df['月份'] = sales_df['日期'].dt.month
monthly_sales = sales_df.groupby('月份')['销售额'].sum()

plt.figure(figsize=(12, 8))

# 月度销售额趋势
plt.subplot(2, 2, 1)
monthly_sales.plot(kind='line', marker='o')
plt.title('月度销售额趋势')
plt.ylabel('销售额')

# 产品类别销售额占比
plt.subplot(2, 2, 2)
category_sales = sales_df.groupby('产品类别')['销售额'].sum()
plt.pie(category_sales.values, labels=category_sales.index, autopct='%1.1f%%')
plt.title('产品类别销售额占比')

# 销售额分布
plt.subplot(2, 2, 3)
plt.hist(sales_df['销售额'], bins=20, alpha=0.7, color='green')
plt.title('销售额分布')
plt.xlabel('销售额')

# 类别销售额箱线图
plt.subplot(2, 2, 4)
sns.boxplot(data=sales_df, x='产品类别', y='销售额')
plt.title('各类别销售额分布')

plt.tight_layout()
plt.show()

七、性能优化技巧

7.1 向量化操作

# 不推荐的循环方式
def slow_calculation(df):
    result = []
    for i in range(len(df)):
        result.append(df.iloc[i]['销售额'] * 1.1)
    return result

# 推荐的向量化方式
def fast_calculation(df):
    return df['销售额'] * 1.1

# 性能对比
%timeit slow_calculation(sales_df)
%timeit fast_calculation(sales_df)

7.2 内存优化

# 查看数据类型
print("数据类型信息:")
print(sales_df.info())

# 优化数据类型
def optimize_dtypes(df):
    # 转换数值类型
    df['数量'] = df['数量'].astype('int32')
    df['销售额'] = df['销售额'].astype('float32')
    return df

optimized_df = optimize_dtypes(sales_df.copy())
print("优化后内存使用:")
print(optimized_df.info(memory_usage='deep'))

八、核心功能对比表

库名称 主要功能 优势 适用场景
NumPy 数值计算、数组操作 高性能、内存效率高 科学计算、矩阵运算
Pandas 数据处理、数据分析 灵活的数据结构、丰富API 数据清洗、统计分析
Matplotlib 数据可视化 高度可定制、图表类型丰富 数据展示、报告生成

九、总结

本文全面介绍了Python数据分析三大核心库的使用方法,从基础操作到实战应用,涵盖了数据处理、分析和可视化的完整流程。掌握这些工具将极大提升您的数据分析能力。

十、参考文献

  1. Pandas官方文档:https://pandas.pydata.org/docs/ 
  2. NumPy官方文档:https://numpy.org/doc/stable/ 
  3. Matplotlib官方文档:https://matplotlib.org/stable/contents.html 
  4. Python数据分析最佳实践:https://realpython.com/tutorials/data-science/ 
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐