学习 Pandas 库:Series 与 DataFrame 核心操作指南
目录
一、Series:一维数据结构
1. 创建 Series
2. Series 的属性
3. Series 的查询操作
4. Series 的修改与删除
5. 重置索引
二、DataFrame:二维数据结构
1. 创建 DataFrame
2. DataFrame 的属性
3. DataFrame 的查询操作
(1)直接访问
(2)loc 方法(标签索引)
(3)iloc 方法(位置索引)
4. DataFrame 的修改操作
(1)修改行列名
(2)增加行列
(3)值替换
(4)排序
5. DataFrame 的删除操作
Pandas 是 Python 中用于数据处理和分析的重要库,它提供了两种核心数据结构:Series 和 DataFrame。本文将基于实际代码示例,详细介绍这两种数据结构的创建与常用操作。
一、Series:一维数据结构
Series 可以看作是竖起来的列表,它由一组数据和对应的索引组成。
1. 创建 Series
创建 Series 的基本方式有两种:使用列表创建和使用字典创建。
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 都有几个重要属性:
# 获取索引
s_1.index# 获取值(返回numpy数组)
s_1.values
3. Series 的查询操作
Series 的查询主要有两种方式:通过标签访问和通过位置索引访问。
# 通过标签访问
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 的修改与删除
# 修改元素
s_2[0] = 'Peter'# 删除元素(返回新的Series,不修改原对象)
s_1 = s_1.drop('a')# 检查值是否存在
print('jim' != s_2.values)
5. 重置索引
s_4.index = range(0, len(s_4)) # 将索引重置为0,1,2...
二、DataFrame:二维数据结构
DataFrame 可以看作是 Excel 表格,由多个 Series 按列拼接而成,包含行索引和列名。
1. 创建 DataFrame
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 的属性
# 获取行索引
df_1.index# 获取列名
df_1.columns# 获取值(返回二维numpy数组)
df_1.values
3. DataFrame 的查询操作
DataFrame 提供了多种查询方式,常用的有三种:
(1)直接访问
# 访问某列
print(df.name)
print(df['name'])# 访问某些列
print(df[['age', 'name']])# 访问行(切片方式)
print(df[0:2])
(2)loc 方法(标签索引)
# 访问某个值
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 方法(位置索引)
# 获取某个数据
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)修改行列名
# 修改列名
df.columns = range(0, len(df.columns))# 修改行名
df.index = range(0, len(df.index))
(2)增加行列
# 增加一列
df['pay'] = [20, 30, 40]# 增加一行
df.loc['person4', ['age', 'name', 'income']] = [20, 'kitty', 200]
(3)值替换
# 替换性别列的值
df['gender'] = df['gender'].replace(['m', 'f'], ['male', 'female'])
(4)排序
# 按年龄升序排序
df = df.sort_values(by=['age'])# 按年龄降序排序
df = df.sort_values(by=['age'], ascending=False)
5. DataFrame 的删除操作
# 删除列(直接在原数据上操作)
del df['age']# 删除列(返回新数据,不修改原数据)
data = df.drop('name', axis=1, inplace=False)# 删除行(在原数据上操作)
df.drop('person3', axis=0, inplace=True)