Python Pandas 基础教程(上篇)

  • 时间:2025-11-13 21:02 作者: 来源: 阅读:1
  • 扫一扫,手机访问
摘要:在数据分析领域(data analysis field),Pandas 是一款超级重大(crucial)且常用的 Python 库​它提供了高效且灵活的数据结构(flexible data structures),如Series 和 DataFrame,​让我们可以轻松地进行数据清洗、处理、分析和可视化。(cleaning, processing, analysis, and visualizat
  • 数据分析领域(data analysis field),Pandas 是一款超级重大(crucial)且常用的 Python 库
  • 它提供了高效且灵活的数据结构(flexible data structures),如Series 和 DataFrame,
  • 让我们可以轻松地进行数据清洗、处理、分析和可视化
    (cleaning, processing, analysis, and visualization)

1. 什么是 Pandas?

Pandas 是基于 NumPy 的数据分析库,擅长处理表格化或异质性数据(well-suited for tabular or heterogeneous data)

  • 核心特性:
  • Series一维带标签的数组(one-dimensional labeled array),可存储各种类型数据
  • DataFrame:二维表格数据结构,具有行列索引(row and column indices),类似电子表格(spreadsheets)或 SQL 表
  • 高效的数据读写:支持多种格式(CSV、Excel、SQL 等)读写

2. 安装与导入

2.1 安装

pip install pandas # 如果你已安装 Anaconda,则默认自带 Pandas,不需要pip install...

2.2 导入 (Import)

import pandas as pd  # pd同样也是海内外社区通用名称

3. 核心数据结构

3.1 Series:一维数据

import pandas as pd
import numpy as np

# 创建一个简单的Series
一维数组 = pd.Series(["贝果", "司康", "碱水"], index=["星期一", "星期二", "星期三"], name="早餐")
print(一维数组["星期一"]) # 输出贝果

# 从字典创建Series
午餐 = { "星期一": "沙县", "星期二": "黄焖鸡", "星期三": "麻辣烫"}
午餐数组 = pd.Series(午餐, name="午餐")
print(午餐数组["星期二"]) # 输出黄焖鸡

# 从NumPy数组创建Series
晚餐 = np.array(["炒饭", "炒面", "炒粉"])
索引 = ["星期一", "星期二", "星期三"]
晚餐数组 = pd.Series(晚餐, index=索引, name="晚餐")
print(晚餐数组["星期三"]) # 输出炒粉

关于索引的说明:

  • 索引对齐: Series 的索引是唯一的,如果传入的index有重复值,pandas不会报错,但可能会导致意外的行为
  • 数据与索引长度匹配: data 和index的长度必须一致,否则会抛出ValueError

3.2 Series基本操作

print(晚餐数组.values)  # 获取值数组
print(晚餐数组.index)   # 获取索引
print(晚餐数组.name)    # 获取名称
print(晚餐数组.dtype)   # 获取数据类型

晚餐数组["星期三"] = "炒饼"  # 修改值
晚餐数组 = 晚餐数组.append(pd.Series(["炒年糕"], index=["星期四"]))  # 追加数据
晚餐数组 = 晚餐数组.drop("星期三")  # 删除数据
晚餐数组.isnull()  # 检查缺失值
晚餐数组.dropna()  # 删除缺失值
晚餐数组.fillna("未知")  # 填充缺失值
晚餐数组[晚餐数组 == "炒饭"]  # 筛选符合条件的值
晚餐数组.str.contains("炒")  # 检查是否包含特定字符串

3.3 DataFrame:二维表格

import pandas as pd

游戏数据 = {
    "角色": ["亚索", "劫", "阿狸", "金克丝"],
    "位置": ["中路", "中路", "中路", "下路"],
    "胜率": [49.3, 50.1, 51.7, 52.4]
}

游戏数据框 = pd.DataFrame(游戏数据)
print(游戏数据框)
# -------------------------------------------------------------------
import numpy as np

电影数据 = np.array([
    ["复仇者联盟4: 终局之战", 8.4, 2019, "动作"],
    ["流浪地球2", 8.3, 2023, "科幻"],
    ["蜘蛛侠:纵横宇宙", 8.6, 2023, "动画"],
    ["奥本海默", 8.5, 2023, "传记"]
])

电影数据框 = pd.DataFrame(电影数据, columns=["电影名称", "评分", "上映年份", "类型"])
print(电影数据框)

常见操作

print(游戏数据框.head())  # 查看前几行数据,默认为前5行
print(游戏数据框.tail())  # 查看后几行数据,默认为后5行
print(游戏数据框.shape)  # 查看数据框的形状,即行数和列数
print(游戏数据框.columns)  # 查看列名
print(游戏数据框.index)  # 查看索引
print(游戏数据框.info())  # 查看数据框的基本信息
print(游戏数据框.describe())  # 查看数值型数据的统计信息
print(游戏数据框["角色"])  # 获取某一列的数据
print(游戏数据框.loc[0])  # 获取某一行的数据
print(游戏数据框.iloc[0])  # 获取某一行的数据,通过行号索引
print(游戏数据框.loc[0:2, "位置"])  # 获取某几行某一列的数据
print(游戏数据框[游戏数据框["胜率"] > 50])  # 筛选符合条件的行
print(游戏数据框.sort_values(by="胜率", ascending=False))  # 按照某一列的值进行排序
print(游戏数据框.drop("位置", axis=1))  # 删除某一列的数据
print(游戏数据框.drop(0))  # 删除某一行的数据

4. 数据导入与导出

Pandas 提供了多种读取和存储数据的方式,如 CSV、Excel、SQL 数据库等

4.1 读取 CSV(Comma-Separated Values)文件

csv读取文件 = pd.read_csv("数据.csv")
print(csv读取文件.head())

说明:

  • read_csv() 可读取 CSV 文件,还可用 sep、header、names 等参数定制解析

4.2 写入 CSV 文件

csv读取文件.to_csv("数据输出.csv", index=False)

说明:

  • to_csv() 可将 DataFrame 写回到 CSV 文件中,index=False 表明不写入行索引。

4.3 Excel导入与导出

import pandas as pd
# 读取Excel文件
数据框 = pd.read_excel("数据.xlsx", sheet_name="表1")
# 写入Excel文件
数据框.to_excel("新数据.xlsx", sheet_name="表2")

5. 常见操作:索引与基本数据处理

5.1 索引

  • df[col_name]df["col_name"]:访问某一列
    (Access a single column)
  • df.loc[row_label, col_label]:按标签索引
    (Label-based indexing)
  • df.iloc[row_pos, col_pos]:按位置索引
    (Position-based indexing)
print(df.loc[0, "name"])  # 第一行, name 列
print(df.iloc[1, 2])      # 第二行, 第三列

5.2 基本数据处理 (Basic Data Manipulation)

  • 排序:df.sort_values(by="age")
  • 删除列:df.drop("city", axis=1)
  • 添加列: df["salary"] = [5000, 6000, 7000] # 新增列
  • 过滤:df[df["age"] > 28]

6. 小贴士与注意事项 (Tips & Caveats)

  1. 内存占用:大数据量时需注意内存,可通过指定 dtype 或分批处理提高效率
    (For large datasets, be mindful of memory usage. Consider specifying dtype or processing in chunks.)
  2. 慎用链式索引:如 df[df["age"] > 30]["name"],可能导致不确定行为,推荐使用 loc 或 iloc
    (Chained indexing can cause ambiguous behavior. Prefer loc or iloc for clarity.)
  3. 缺失值处理:后续章节会介绍 NaN 值填充与删除等高级操作。
  • 全部评论(0)
最新发布的资讯信息
【系统环境|】如何在日期天数后快速加上第n天的英文后缀?(2025-11-13 22:32)
【系统环境|】法兰的基本知识(2025-11-13 22:32)
【系统环境|】「从零搭建」用 SpringBoot + 向量搜索打造智能短视频推荐系统!(2025-11-13 22:31)
【系统环境|】常用英语词语辨析105组(内容有点多,请收藏备用)(2025-11-13 22:31)
【系统环境|】英语高级词汇:asylum(2025-11-13 22:30)
【系统环境|】第1章 电气家装仪表的使用方法与技巧(2025-11-13 22:29)
【系统环境|】最快获得VC的方式#NBA2K(2025-11-13 22:29)
【系统环境|】用 VitePress 搭建电子书,绝了!(2025-11-13 22:28)
【系统环境|】时隔多年,VitePress 终于迎来了 v1.0 !(2025-11-13 22:28)
【系统环境|】每日 GitHub 探索|探索一系列热门开源项目,提升你的技能(2025-11-13 22:27)
手机二维码手机访问领取大礼包
返回顶部