前言
本文将介绍Pandas对索引的基本操作,操作的对象包括Series对象和Dataframe对象。
一、索引的基础知识
使用索引的好处在于:
1、为用户实现更加方便的查询数据
2、提高数据查询的性能
- 如果索引是唯一的,Pandas将使用hash进行优化
- 如果索引是不唯一且有序的,Pandas将使用二分查找算法
- 如果索引是不唯一且无序的,Pandas每次查询时将扫描数据表
二、Series对象的操作
代码如下(示例):
# Series对象重建索引
import pandas as pd
ss = pd.Series([11, 22, 33, 44], index = [1, 2, 3, 4])
print(ss)
# print(ss.reindex(range(1, 6)))
# 使用特定值来填充索引
# print(ss.reindex(range(1, 6), fill_value = 0))
# 向前填充
# print(ss.reindex(range(1, 6), method = 'ffill'))
# 向后填充
print(ss.reindex(range(1, 6), method = 'bfill'))
在填充的过程中,可以通过设定fill_value来指定填充值
向前填充,即空白处会根据该列上一行的值来进行填充
向后填充,即空白处会根据该列下一行的值来进行填充,若没有下一行,则填充nan
三、Dataframe对象的操作
# Dataframe对象重建索引
import pandas as pd
pd.set_option('display.unicode.east_asian.width', True)
data = [[78, 89, 99], [67, 89, 90]]
index = ['msd1001', 'msd1002']
columns = ['语文', '英语', '数学']
df = pd.DataFrame(data = data, index = index, columns = columns)
print(df)
# 重建行索引
# print(df.reindex(['msd1001', 'msd1002', 'msd1003']))
# 重建列索引
# print(df.reindex(columns = ['语文', '数学', '英语', '体育']))
# 同时重建行索引和列索引(并使用指定值来填充空白值)
print(df.reindex(index = ['msd1001', 'msd1002', 'msd1003'], columns = ['语文', '数学', '英语', '体育'], fill_value = 0))
可以分别对行索引或者列索引进行重建,也可以同时进行重建
四、设置某列为索引
# 设定某一列为索引
import pandas as pd
df = pd.read_csv('ds_salaries.csv')
# print(df)
df = df.set_index(['job_title'])
print(df)
设置Dataframe中的某一列作为索引
五、重设连续索引
# 重新设置连续的索引
import pandas as pd
pd.set_option('display.unicode.east_asian.width', True)
data = [[78, 89, 99], [67, 89, 90], [78, 90, 100]]
index = range(3)
columns = ['语文', '英语', '数学']
df = pd.DataFrame(data = data, index = index, columns = columns)
print(df)
print('-------------------------')
# 删除某一列数据之后重新建立索引
df = df.drop(0).reset_index(drop = True)
print(df)
在删除行数据之后,原有的连续索引会被打乱,通过reset_index重新设置连续索引
总结
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas中对索引问题的一些处理方法,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。