当前位置: 首页 > java >正文

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

目录

  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
http://www.xdnf.cn/news/6085.html

相关文章:

  • Docker Compose 的安装方法
  • 使用mermaid 语言绘画时序图和链路图
  • 基于 TensorFlow 框架的联邦学习可穿戴设备健康数据个性化健康管理平台研究
  • Tensorflow2保存和加载模型
  • 2025年PMP 学习十二 第9章 项目资源管理
  • 02_Servlet
  • .Net HttpClient 使用代理功能
  • Leetcode (力扣)做题记录 hot100(62,64,287,108)
  • C#调用C++dll 过程记录
  • 技术债务积累,如何进行有效管理
  • C++ 日志输出(宏定义)
  • 无人机数据处理与特征提取技术分析!
  • 劫持__security_check_cookie
  • 入门OpenTelemetry——部署OpenTelemetry
  • 分布式1(cap base理论 锁 事务 幂等性 rpc)
  • 微信小程序之将轮播图设计为组件
  • “强强联手,智启未来”凯创未来与绿算技术共筑高端智能家居及智能照明领域新生态
  • 【Alist+RaiDrive挂载网盘到本地磁盘】
  • 面向对象设计模式之代理模式详解
  • 如何查看SD卡存储扇区分配表?有什么不同之处
  • 远程连接电脑的方法?异地远程桌面连接和三方软件实现
  • Java 重试机制详解
  • QT之QComboBox组件
  • 软考 系统架构设计师系列知识点之杂项集萃(59)
  • 【springcloud学习(dalston.sr1)】Eureka单个服务端的搭建(含源代码)(三)
  • Python 常用模块(八):logging模块
  • 基于GpuGeek平台的深度学习项目
  • Keil5 MDK 安装教程
  • LeetCode 热题 100 35.搜索插入位置
  • python打包exe报错:处理文件时错误:Excel xlsx file; not supported