|
pandas练习文档(1).xlsx
416.6K
· 百度网盘
1、索引简介
索引(index)是数据处理中非常重要的工具。索引主要用来:
1)标记数据;2)快速检索数据;
Pandas中的索引,有两种:1)index(行索引);2)columns(列索引);
数据准备
import pandas as pd
#读取数据
df = pd.read_excel(r'C:\Users\XXXXXX\Desktop\pandas练习文档.xlsx',sheet_name=3)
print(df)

2、设置索引的常用方法
2.1 读取数据时设置索引
import pandas as pd
#读取数据,同时,使用index_col选取第一列作为索引列。
df = pd.read_excel(r'C:\Users\XXXXXX\Desktop\pandas练习文档.xlsx',sheet_name=3,index_col=0)
print(df)

2.2 查看索引相关信息
2.2.1 df.index
import pandas as pd
#读取数据时,设置了index
df = pd.read_excel(r'C:\Users\XXXXXX\Desktop\pandas练习文档.xlsx',sheet_name=3,index_col=1)
print(df)
print('\n')
print(df.index)

2.3 设置索引列的名称
2.3.1 df.rename_axis()
import pandas as pd
#读取数据
df = pd.read_excel(r'C:\Users\XXXXXX\Desktop\pandas练习文档.xlsx',sheet_name=3)
print(df)
print('\n')
df = df.rename_axis('index_col')
print(df)

2.3.2 df.index.name
import pandas as pd
#读取数据
df = pd.read_excel(r'C:\Users\XXXXXX\Desktop\pandas练习文档.xlsx',sheet_name=3)
print(df)
print('\n')
df.index.name = 'index_col'
print(df)

2.3.3 df.index.names = []
import pandas as pd
#读取数据
df = pd.read_excel(r'C:\Users\XXXXXX\Desktop\pandas练习文档.xlsx',sheet_name=3)
#set_index()是设置索引列,reset_index()可以将索引列变成数据列。
df = df.set_index(keys=['id','name'],drop=True,append=True)
df_new = df.reset_index(level=1,drop=False)
print(df_new)
print('\n')
df_new.index.names = ['x','y']
print(df_new)

2.3.4 df.columns=values
import pandas as pd
#先设置多级别index
index = pd.MultiIndex.from_tuples([('girl','Lucy'),
('girl','Rose'),
('boy','Tom'),
('boy','Jack'),
],
names=['gender','name'])
#设置columns,一列一个元组,如果是多级别,在一个元组内。
columns = pd.MultiIndex.from_tuples([('math',),
('english',)])
#构造数据。
df = pd.DataFrame([
(99,78),
(87,32),
(23,89),
(28,81)
],
index=index,
columns=columns)
print(df)
df.columns=['数学','英语']
print('\n')
print(df)

2.4 重置索引:df.index=values
使用赋值的方法。
【注:重置索引后,不会将原来的索引列作为新的一列保留。】
import pandas as pd
#读取数据,同时,使用index_col选取第一列作为索引列。
df = pd.read_excel(r'C:\Users\XXXXXX\Desktop\pandas练习文档.xlsx',sheet_name=3,index_col=0)
df.index = range(len(df))
print(df)

2.5 重置索引:df.reset_index()
2.5.1 df.reset_index()参数详情
reset_index(
level=None, #如果索引有多个层级,仅从索引中删除level指定的列。默认为删除所有的列。
drop=False, #重置索引后,是否将原来的索引列作为新的一列保留。默认为False,即保留。
col_level=0, #如果列有多个级别,确定将这一索引列插入到哪一个级别。默认情况为0,即插入到第一级别。
col_fill='' ,#确定如何命名其他级别。
inplace=False#是否要用新的DataFrame替换原来的DataFrame,一般默认为False。
)
2.5.2 修改索引,并保留原来的索引列为新的一列
import pandas as pd
#读取数据
df = pd.read_excel(r'C:\Users\XXXXXX\Desktop\pandas练习文档.xlsx',sheet_name=3,index_col=0)
#重置索引,会将原来的索引列,变成新的一列。
df_new = df.reset_index()
print(df,df_new,sep='\n')

2.5.3 删除索引:将索引的列的第二列,变成数据列的第二列
import pandas as pd
#读取数据
df = pd.read_excel(r'C:\Users\XXXXXX\Desktop\pandas练习文档.xlsx',sheet_name=3)
#先用set_index()增加几个索引
df = df.set_index(keys=['id','name'],drop=True,append=True)
print(df)

使用df.reset_index()将id列变成数据列
import pandas as pd
#读取数据
df = pd.read_excel(r'C:\Users\XXXXXX\Desktop\pandas练习文档.xlsx',sheet_name=3)
#set_index()是设置索引列,reset_index()可以将索引列变成数据列。
df = df.set_index(keys=['id','name'],drop=True,append=True)
df_new = df.reset_index(level=1,drop=False)
print(df,df_new,sep='\n')

2.5.4 多级别索引的处理
1)使用MultiIndex构造多级别索引
import pandas as pd
#先设置多级别index
index = pd.MultiIndex.from_tuples([('girl','Lucy'),
('girl','Rose'),
('boy','Tom'),
('boy','Jack'),
],
names=['gender','name'])
#设置columns,一列一个元组,如果是多级别,在一个元组内。
columns = pd.MultiIndex.from_tuples([('math',),
('english',)])
#构造数据。
df = pd.DataFrame([
(99,78),
(87,32),
(23,89),
(28,81)
],
index=index,
columns=columns)
print(df)

将索引"gender"当成数据列。
df = df.reset_index(level='gender')
print(df)

2.6 重置索引:df.set_index()
2.6.1 df.set_index()参数详解
set_index(
keys, #要设置索引的列名。
drop=True, #将设置索引的列删除,默认为True,即不保留。
append=False, #是否保留原索引。默认为False。
inplace=False, #是否在替换原来的DataFrame。默认为False。
verify_integrity=False#是否检查索引有无重复,默认为False。
)
import pandas as pd
#读取数据
df = pd.read_excel(r'C:\Users\XXXXXX\Desktop\pandas练习文档.xlsx',sheet_name=3)
#先用set_index()增加几个索引
df = df.set_index(keys=['id','name'],drop=False,append=True)
print(df)

2.7 重置索引:df.reindex()
2.7.1 df.reindex()参数详解
【注:这个参数对其中某些值如method,即使按照官网上的操作,还是报错。我也没弄特别清楚】
pandas.DataFrame.reindex — pandas 1.5.2 documentation
df.reindex(
keywords for axes, #列标签,行标签。即index=,columns等。
method=None, #默认为None。针对填入的数据是向前,向后,向左,还是向右。{None, 'backfill'/'bfill', 'pad'/'ffill', 'nearest'}
copy=True,
level=None, #多级别索引时使用。
fill_value=nan, #一般默认填入NaN。可以设置。
limit=None, #向前或向后填入的最大连续数。
tolerance=None2.7.2 基本用法
import pandas as pd
df = pd.DataFrame([
(99,78),
(87,32),
(23,89),
(28,81)
])
print(df)
print('\n')
#使用df.reindex()重新赋值索引。
df = df.reindex([0,'B',3,'D'])
print(df)

fill_value的使用
import pandas as pd
df = pd.DataFrame([
(99,78),
(87,32),
(23,89),
(28,81)
])
print(df)
print('\n')
#使用df.reindex()重新赋值索引。
df = df.reindex([0,'B',3,'D'],fill_value='--')
print(df)

修改columns
import pandas as pd
df = pd.DataFrame([
(99,78),
(87,32),
(23,89),
(28,81)
],columns=['math','english'])
print(df)
print('\n')
#使用df.reindex()重新赋值索引。
df = df.reindex(columns=['math','english','music'],fill_value='100')
#或者使用
print(df)
 |
|