数据科学和机器学习的“看家兵器”——pandas模块 之一

发布于:2025-05-15 ⋅ 阅读:(19) ⋅ 点赞:(0)

目录

  pandas 模块介绍

  4.1 pandas 数据结构

  一、课程目标

  二、Series 对象介绍

  三、DataFrame 对象介绍

  四、Series 和 DataFrame 在具体应用中的注意事项

  (一)Series 注意事项

  (二)DataFrame 注意事项

  五、实战案例

  案例 1:学生成绩分析

  案例 2:销售数据分析

  案例 3:股票数据分析

  案例 4:客户流失分析

  六、课程总结回顾

  七、课后练习题



  pandas 模块介绍

  pandas 是 Python 的一个开源数据分析库,为 Python 提供了高性能、易用的数据结构和数据分析工具。它建立在 NumPy 之上,使得以 NumPy 为中心的应用变得更加简单。pandas 的名字衍生自术语 "panel data"(面板数据)和 "Python data analysis"(Python 数据分析)。

  pandas 的主要数据结构是 Series(一维数组)和 DataFrame(二维表格型数据结构),它们能够处理各种类型的数据,无论是时间序列数据、表格数据还是矩阵数据。pandas 提供了高级数据操作功能,包括数据清洗、合并、重塑、聚合和时间序列分析等。它广泛应用于金融、经济、统计、社会科学等领域,是数据科学和机器学习工作流程中不可或缺的工具。

  4.1 pandas 数据结构

  一、课程目标

  本次课程主要围绕 pandas 的核心数据结构展开,通过理论讲解和案例分析,让学员掌握 Series 和 DataFrame 的基本概念、创建方法、数据操作及应用场景。学员学完本次课程后,能够熟练使用 pandas 进行基础的数据处理和分析工作。

  二、Series 对象介绍

  Series 是 pandas 的一维标记数组,能够保存任何数据类型(整数、字符串、浮点数、Python 对象等)。它由两部分组成:索引(index)和值(values)。索引在左侧,值在右侧。如果没有指定索引,pandas 会自动创建一个从 0 开始的整数索引。

  案例 1:基本 Series 对象的创建与操作

import pandas as pd

# 创建Series对象
data = [10, 20, 30, 40, 50]
s = pd.Series(data)
print("基本Series对象:")
print(s)

# 获取值
print("\nSeries的值:")
print(s.values)

# 获取索引
print("\nSeries的索引:")
print(s.index)

# 修改索引
s.index = ['a', 'b', 'c', 'd', 'e']
print("\n修改索引后的Series:")
print(s)

# 通过索引访问值
print("\n通过索引'b'访问值:")
print(s['b'])

# 通过位置访问值
print("\n通过位置2访问值:")
print(s[2])

  这个案例展示了 Series 的基本创建方法、获取值和索引的方式,以及如何修改索引和通过不同方式访问值。

  案例 2:带标签索引的 Series 对象

# 创建带标签索引的Series
data = {'北京': 1000, '上海': 1500, '广州': 800, '深圳': 1200}
s = pd.Series(data)
print("带标签索引的Series:")
print(s)

# 索引顺序可以不同于字典中的键顺序
cities = ['上海', '北京', '深圳', '成都']
s = pd.Series(data, index=cities)
print("\n指定索引顺序的Series:")
print(s)

# 检测缺失数据
print("\n检测缺失数据:")
print(s.isnull())

# 数学运算
print("\nSeries乘以2:")
print(s * 2)

# 布尔索引
print("\n筛选值大于1000的城市:")
print(s[s > 1000])

  此案例重点展示了如何使用字典创建 Series,以及如何处理缺失数据、进行数学运算和布尔索引。

  案例 3:时间序列索引的 Series 对象

# 创建时间序列索引的Series
dates = pd.date_range('20250101', periods=5)
s = pd.Series([10, 20, 30, 40, 50], index=dates)
print("时间序列索引的Series:")
print(s)

# 通过日期访问值
print("\n访问2025年1月3日的值:")
print(s['2025-01-03'])

# 访问某个时间段的值
print("\n访问2025年1月2日至2025年1月4日的值:")
print(s['2025-01-02':'2025-01-04'])

# 时间序列切片
print("\n访问2025年1月3日及之后的值:")
print(s['2025-01-03':])

# 添加新的日期值
s['2025-01-06'] = 60
print("\n添加新日期后:")
print(s)

  这个案例聚焦于时间序列索引的 Series,展示了如何创建、访问和操作时间序列数据。

  三、DataFrame 对象介绍

  DataFrame 是 pandas 的二维标记数据结构,由行索引和列索引组成。它类似于电子表格、SQL 表或 Series 对象构成的字典。DataFrame 可以接受多种类型的输入,如字典、Series、NumPy 数组、另一个 DataFrame 等。

  案例 1:基本 DataFrame 对象的创建与操作

# 创建DataFrame
data = {
    '城市': ['北京', '上海', '广州', '深圳', '杭州'],
    '人口(万)': [2154, 2424, 1490, 1303, 980],
    'GDP(亿)': [30320, 32680, 22859, 24222, 13509]
}
df = pd.DataFrame(data)
print("基本DataFrame对象:")
print(df)

# 查看数据基本信息
print("\n数据基本信息:")
df.info()

# 查看数据集行数和列数
rows, columns = df.shape

# 查看数据集行数和列数
if rows < 10 and columns < 10:
    # 短表数据(行数少于10且列数少于10)查看全量数据信息
    print("\n数据全部内容信息:")
    print(df.to_csv(sep='\t', na_rep='nan'))
else:
    # 长表数据查看数据前几行信息
    print("\n数据前几行内容信息:")
    print(df.head().to_csv(sep='\t', na_rep='nan'))

# 获取列
print("\n获取'城市'列:")
print(df['城市'])

# 获取行
print("\n获取第2行:")
print(df.loc[1])

# 添加新列
df['面积(km²)'] = [16410, 6340, 7434, 1997, 16853]
print("\n添加'面积'列后:")
print(df)

# 计算人口密度
df['人口密度(人/km²)'] = df['人口(万)'] * 10000 / df['面积(km²)']
print("\n计算'人口密度'列后:")
print(df)

  这个案例展示了 DataFrame 的基本创建方法、获取行列数据的方式,以及如何添加新列和进行简单的数据计算。

  案例 2:使用不同数据源创建 DataFrame

# 从CSV文件创建DataFrame
# df = pd.read_csv('data.csv')

# 从Excel文件创建DataFrame
# df = pd.read_excel('data.xlsx')

# 从字典列表创建DataFrame
data = [
    {'姓名': '张三', '年龄': 25, '性别': '男'},
    {'姓名': '李四', '年龄': 30, '性别': '男'},
    {'姓名': '王五', '年龄': 28, '性别': '女'}
]
df = pd.DataFrame(data)
print("从字典列表创建的DataFrame:")
print(df)

# 从Series字典创建DataFrame
d = {
    'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),
    'two': pd.Series([10, 20, 30, 40], index

网站公告

今日签到

点亮在社区的每一天
去签到