目录
[1. 创建 Series](#1. 创建 Series)
[2. Series 的属性](#2. Series 的属性)
[3. Series 的查询操作](#3. Series 的查询操作)
[4. Series 的修改与删除](#4. Series 的修改与删除)
[5. 重置索引](#5. 重置索引)
[1. 创建 DataFrame](#1. 创建 DataFrame)
[2. DataFrame 的属性](#2. DataFrame 的属性)
[3. DataFrame 的查询操作](#3. DataFrame 的查询操作)
[(2)loc 方法(标签索引)](#(2)loc 方法(标签索引))
[(3)iloc 方法(位置索引)](#(3)iloc 方法(位置索引))
[4. DataFrame 的修改操作](#4. DataFrame 的修改操作)
[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)