学习 Pandas 库:Series 与 DataFrame 核心操作指南

目录

一、Series:一维数据结构

[1. 创建 Series](#1. 创建 Series)

[2. Series 的属性](#2. Series 的属性)

[3. Series 的查询操作](#3. Series 的查询操作)

[4. Series 的修改与删除](#4. Series 的修改与删除)

[5. 重置索引](#5. 重置索引)

二、DataFrame:二维数据结构

[1. 创建 DataFrame](#1. 创建 DataFrame)

[2. DataFrame 的属性](#2. DataFrame 的属性)

[3. DataFrame 的查询操作](#3. DataFrame 的查询操作)

(1)直接访问

[(2)loc 方法(标签索引)](#(2)loc 方法(标签索引))

[(3)iloc 方法(位置索引)](#(3)iloc 方法(位置索引))

[4. DataFrame 的修改操作](#4. DataFrame 的修改操作)

(1)修改行列名

(2)增加行列

(3)值替换

(4)排序

[5. DataFrame 的删除操作](#5. DataFrame 的删除操作)


Pandas 是 Python 中用于数据处理和分析的重要库,它提供了两种核心数据结构:Series 和 DataFrame。本文将基于实际代码示例,详细介绍这两种数据结构的创建与常用操作。

一、Series:一维数据结构

Series 可以看作是竖起来的列表,它由一组数据和对应的索引组成。

1. 创建 Series

创建 Series 的基本方式有两种:使用列表创建和使用字典创建。

python 复制代码
import pandas as pd

# 1. 使用列表创建,默认索引为0,1,2...
s_1 = pd.Series([1,2,3,4,5])

# 2. 自定义索引
s_2 = pd.Series([1,2,3,4,5], index=['a', 'b', 'c', 'd', 'e'])

# 3. 使用字典创建(字典的键会成为索引)
dic_1 = {"name1": "Peter", "name2":"tim", "name3":"rose"}
s_4 = pd.Series(dic_1)

2. Series 的属性

每个 Series 都有几个重要属性:

python 复制代码
# 获取索引
s_1.index

# 获取值(返回numpy数组)
s_1.values

3. Series 的查询操作

Series 的查询主要有两种方式:通过标签访问和通过位置索引访问。

python 复制代码
# 通过标签访问
print(s_1['d'])               # 访问单个元素
print(s_1['a':'d'])           # 访问切片(包含结束标签)
print(s_1[['a', 'd']])        # 访问多个不连续元素

# 通过位置索引访问
print(s_2[2])                 # 访问单个元素
print(s_2[0:2])               # 访问切片(不包含结束位置)
print(s_2[[0, 2]])            # 访问多个不连续元素

4. Series 的修改与删除

python 复制代码
# 修改元素
s_2[0] = 'Peter'

# 删除元素(返回新的Series,不修改原对象)
s_1 = s_1.drop('a')

# 检查值是否存在
print('jim' != s_2.values)

5. 重置索引

python 复制代码
s_4.index = range(0, len(s_4))  # 将索引重置为0,1,2...

二、DataFrame:二维数据结构

DataFrame 可以看作是 Excel 表格,由多个 Series 按列拼接而成,包含行索引和列名。

1. 创建 DataFrame

python 复制代码
import pandas as pd

# 从字典创建
df_1 = pd.DataFrame({
    'age':[10,11,12],
    'name':['tim', 'tom', 'rose'],
    'income':[100,200,300]
}, index=['person1', 'person2', 'person3'])  # 自定义行索引

2. DataFrame 的属性

python 复制代码
# 获取行索引
df_1.index

# 获取列名
df_1.columns

# 获取值(返回二维numpy数组)
df_1.values

3. DataFrame 的查询操作

DataFrame 提供了多种查询方式,常用的有三种:

(1)直接访问

python 复制代码
# 访问某列
print(df.name)
print(df['name'])

# 访问某些列
print(df[['age', 'name']])

# 访问行(切片方式)
print(df[0:2])

(2)loc 方法(标签索引)

python 复制代码
# 访问某个值
print(df.loc['person1', 'name'])

# 访问某列
print(df.loc[:,'B'])

# 访问某些列
print(df.loc['20180103':,['B', 'D']])

# 访问某行
print(df.loc['20180101', :])

# 访问某些行
print(df.loc['20180103':,:])

(3)iloc 方法(位置索引)

python 复制代码
# 获取某个数据
print(df.iloc[1,2])

# 获取某列
print(df.iloc[:,2])

# 获取某几列
print(df.iloc[:,[1,3]])

# 获取某行
print(df.iloc[1,:])

# 获取某些行
print(df.iloc[[1,2,4],:])

4. DataFrame 的修改操作

(1)修改行列名

python 复制代码
# 修改列名
df.columns = range(0, len(df.columns))

# 修改行名
df.index = range(0, len(df.index))

(2)增加行列

python 复制代码
# 增加一列
df['pay'] = [20, 30, 40]

# 增加一行
df.loc['person4', ['age', 'name', 'income']] = [20, 'kitty', 200]

(3)值替换

python 复制代码
# 替换性别列的值
df['gender'] = df['gender'].replace(['m', 'f'], ['male', 'female'])

(4)排序

python 复制代码
# 按年龄升序排序
df = df.sort_values(by=['age'])

# 按年龄降序排序
df = df.sort_values(by=['age'], ascending=False)

5. DataFrame 的删除操作

python 复制代码
# 删除列(直接在原数据上操作)
del df['age']

# 删除列(返回新数据,不修改原数据)
data = df.drop('name', axis=1, inplace=False)

# 删除行(在原数据上操作)
df.drop('person3', axis=0, inplace=True)