一、Numpy:数据分析的“数学大脑”
一句话理解
Numpy是Python的“计算引擎”,专门处理数组和矩阵运算。如果说Python是瑞士军刀,那Numpy就是电动工具套装。核心功能
简单代码示例
import numpy as np# 创建数组arr = np.array([1, 2, 3, 4, 5])print("原始数组:", arr)# 基本运算print("每个元素加10:", arr + 10)print("每个元素平方:", arr ** 2)print("平均值:", np.mean(arr))# 创建矩阵matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("\n3x3矩阵:")print(matrix)print("矩阵转置:")print(matrix.T)# 生成随机数据random_data = np.random.randn(100) # 100个正态分布随机数print("\n随机数据均值:", random_data.mean())
二、Pandas:数据处理的“瑞士军刀”
一句话理解
Pandas是Excel的“编程版”,专门处理表格数据。如果你用Excel做数据分析,Pandas就是你的升级版。核心功能
- 数据读取/保存:CSV、Excel、SQL一键导入
简单代码示例
import pandas as pd# 创建数据框(类似Excel表格)data = { '姓名': ['张三', '李四', '王五', '赵六'], '年龄': [25, 30, 35, 28], '城市': ['北京', '上海', '广州', '深圳'], '月薪': [15000, 18000, 22000, 16000]}df = pd.DataFrame(data)print("原始数据:")print(df)print("\n基本信息:")print(df.info())# 数据筛选print("\n筛选年龄大于28的员工:")print(df[df['年龄'] > 28])# 数据统计print("\n统计信息:")print(df.describe())# 分组统计print("\n各城市平均月薪:")print(df.groupby('城市')['月薪'].mean())# 保存到Exceldf.to_excel('员工数据.xlsx', index=False)print("数据已保存到员工数据.xlsx")
三、Matplotlib:可视化的“老牌王者”
一句话理解
Matplotlib是Python的“绘图板”,能画出几乎所有类型的图表。从简单折线图到复杂3D图,无所不能。核心功能
简单代码示例
import matplotlib.pyplot as pltimport numpy as np# 准备数据x = np.linspace(0, 10, 100) # 0到10的100个数y1 = np.sin(x) # 正弦曲线y2 = np.cos(x) # 余弦曲线# 创建画布plt.figure(figsize=(10, 6)) # 设置画布大小# 绘制两条曲线plt.plot(x, y1, label='sin(x)', color='blue', linewidth=2)plt.plot(x, y2, label='cos(x)', color='red', linewidth=2, linestyle='--')# 添加装饰plt.title('正弦与余弦函数曲线', fontsize=16, fontweight='bold')plt.xlabel('X轴', fontsize=12)plt.ylabel('Y轴', fontsize=12)plt.grid(True, alpha=0.3) # 添加网格plt.legend() # 显示图例# 显示图表plt.tight_layout()plt.show()# 快速绘制多个子图fig, axes = plt.subplots(2, 2, figsize=(12, 8))# 子图1:折线图axes[0, 0].plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro-')axes[0, 0].set_title('折线图')# 子图2:柱状图axes[0, 1].bar(['A', 'B', 'C', 'D'], [10, 20, 15, 25], color=['red', 'blue', 'green', 'yellow'])axes[0, 1].set_title('柱状图')# 子图3:散点图x_scatter = np.random.randn(50)y_scatter = np.random.randn(50)axes[1, 0].scatter(x_scatter, y_scatter, alpha=0.6)axes[1, 0].set_title('散点图')# 子图4:饼图sizes = [15, 30, 45, 10]labels = ['A', 'B', 'C', 'D']axes[1, 1].pie(sizes, labels=labels, autopct='%1.1f%%')axes[1, 1].set_title('饼图')plt.suptitle('Matplotlib图表大集合', fontsize=16, fontweight='bold')plt.tight_layout()plt.show()
四、Seaborn:统计可视化的“美学大师”
一句话理解
Seaborn是Matplotlib的“美颜相机”,专门为统计分析设计。一行代码就能生成“网红级”图表。核心功能
简单代码示例
import seaborn as snsimport pandas as pdimport numpy as np# 设置Seaborn样式sns.set_style("whitegrid") # 设置网格背景sns.set_palette("husl") # 设置调色板# 加载内置数据集tips = sns.load_dataset("tips")print("餐厅小费数据集:")print(tips.head())print("\n数据集信息:")print(tips.info())# 1. 分布图(直方图+密度曲线)plt.figure(figsize=(10, 6))sns.histplot(data=tips, x='total_bill', kde=True, bins=20)plt.title('消费金额分布图', fontsize=16, fontweight='bold')plt.xlabel('消费金额(美元)')plt.ylabel('频次')plt.show()# 2. 箱线图(异常值检测)plt.figure(figsize=(10, 6))sns.boxplot(data=tips, x='day', y='total_bill', hue='sex')plt.title('不同日期消费金额箱线图(按性别)', fontsize=16, fontweight='bold')plt.xlabel('星期')plt.ylabel('消费金额(美元)')plt.legend(title='性别')plt.show()# 3. 散点图+回归线plt.figure(figsize=(10, 6))sns.regplot(data=tips, x='total_bill', y='tip', scatter_kws={'alpha':0.5}, line_kws={'color':'red'})plt.title('消费金额与小费关系(带回归线)', fontsize=16, fontweight='bold')plt.xlabel('消费金额(美元)')plt.ylabel('小费(美元)')plt.show()# 4. 分类散点图plt.figure(figsize=(10, 6))sns.stripplot(data=tips, x='day', y='total_bill', hue='sex', dodge=True, alpha=0.7, jitter=0.2)plt.title('不同日期消费情况(按性别)', fontsize=16, fontweight='bold')plt.xlabel('星期')plt.ylabel('消费金额(美元)')plt.legend(title='性别')plt.show()# 5. 热力图(相关性矩阵)plt.figure(figsize=(8, 6))# 选择数值列计算相关性numeric_cols = tips.select_dtypes(include=[np.number]).columnscorr_matrix = tips[numeric_cols].corr()sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', center=0)plt.title('数值变量相关性热力图', fontsize=16, fontweight='bold')plt.tight_layout()plt.show()