Python进阶教程:数据分析入门(NumPy与Pandas)
🕒 阅读时间:6 分钟📝 字数:1145👀 阅读量:Loading...
本文摘要
本篇介绍了 NumPy 数组运算和 Pandas 的 Series、DataFrame、数据清洗、分组聚合,并用销售数据分析串联实战。下一篇将介绍Web 开发入门(Flask),敬请期待!
目录
本文是 Python 入门教程系列 的第 8 篇。前面介绍了数据库操作,本篇介绍数据分析的两大核心库:NumPy 与 Pandas。
一、数据分析生态
Python 数据分析生态:
- NumPy:科学计算基础库,提供多维数组
- Pandas:数据分析利器,提供 DataFrame 数据结构
- Matplotlib:数据可视化
- Scikit-learn:机器学习
安装:pip install numpy pandas matplotlib
二、NumPy:数值计算
2.1 创建数组
import numpy as np
# 从列表创建arr1 = np.array([1, 2, 3, 4, 5])print(arr1, arr1.shape) # [1 2 3 4 5] (5,)
# 二维数组arr2 = np.array([[1, 2], [3, 4]])print(arr2.shape) # (2, 2)
# 常用创建方式zeros = np.zeros((2, 3)) # 全 0ones = np.ones((2, 2)) # 全 1rand = np.random.rand(3) # 随机数range_arr = np.arange(0, 10, 2) # [0 2 4 6 8]2.2 数组运算
import numpy as np
a = np.array([1, 2, 3])b = np.array([4, 5, 6])
print(a + b) # [5 7 9] 向量化运算,无需循环print(a * 2) # [2 4 6]print(a ** 2) # [1 4 9]print(a.mean()) # 2.0 均值print(a.sum()) # 6 求和print(a.max()) # 3 最大值print(np.dot(a, b)) # 32 点积三、Pandas:数据表处理
3.1 Series 与 DataFrame
import pandas as pd
# Series:一维数据(带索引)s = pd.Series([10, 20, 30], index=["a", "b", "c"])print(s["b"]) # 20
# DataFrame:二维表格data = { "姓名": ["张三", "李四", "王五"], "年龄": [20, 22, 21], "成绩": [88.5, 92.0, 95.5],}df = pd.DataFrame(data)print(df)print(df.shape) # (3, 3)print(df.columns) # 列名3.2 读取与查看数据
import pandas as pd
# 读取 CSV 文件# df = pd.read_csv("data.csv")
# 模拟数据df = pd.DataFrame({ "name": ["Alice", "Bob", "Charlie", "David"], "age": [25, 30, 35, 40], "salary": [50000, 60000, 70000, 80000],})
print(df.head()) # 前 5 行print(df.info()) # 数据概览print(df.describe()) # 统计描述print(df["age"].mean()) # 某列均值 32.5print(df[df["salary"] > 60000]) # 条件筛选3.3 数据清洗
import pandas as pdimport numpy as np
df = pd.DataFrame({ "name": ["Alice", None, "Charlie"], "age": [25, None, 35], "score": [88, 92, None],})
print(df.isnull().sum()) # 查看缺失值df = df.dropna() # 删除含缺失值的行df = df.fillna(0) # 或用 0 填充缺失值
# 新增计算列df["age_plus"] = df["age"] + 13.4 分组聚合
import pandas as pd
df = pd.DataFrame({ "部门": ["技术", "技术", "市场", "市场", "市场"], "员工": ["A", "B", "C", "D", "E"], "工资": [10000, 12000, 8000, 9000, 9500],})
# 按部门分组求平均工资grouped = df.groupby("部门")["工资"].mean()print(grouped)# 市场 8833.33# 技术 11000.00
# 多列聚合print(df.groupby("部门").agg({"工资": ["mean", "max", "sum"]}))四、实战:分析销售数据
import pandas as pd
# 模拟一份销售数据sales = pd.DataFrame({ "日期": pd.date_range("2026-01-01", periods=30), "商品": [f"商品{i%3+1}" for i in range(30)], "销量": [20 + i % 7 * 5 for i in range(30)], "金额": [100 + i * 3 for i in range(30)],})
print("=== 数据概览 ===")print(sales.describe())
print("=== 各商品总销量 ===")print(sales.groupby("商品")["销量"].sum())
print("=== 销量最高的 3 天 ===")print(sales.nlargest(3, "销量")[["日期", "销量"]])
print("=== 总销售额 ===")print(f"{sales["金额"].sum():.0f} 元")总结
本篇介绍了 NumPy 数组运算和 Pandas 的 Series、DataFrame、数据清洗、分组聚合,并用销售数据分析串联实战。下一篇将介绍Web 开发入门(Flask),敬请期待!
Python进阶教程:数据分析入门(NumPy与Pandas)
作者:Wang Shijie
本文链接:https://wsj-blog.pages.dev/posts/python-jin-jie-jiao-cheng-shu-ju-fen-xi-ru-men-numpy-yu/
本文采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
留言评论
评论资源加载失败,请重试。