办公问答网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 81|回复: 0

Python之Pandas的常用技能【索引的增、删、改、查】

[复制链接]

1

主题

4

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2023-1-16 07:31:24 | 显示全部楼层 |阅读模式
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)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|办公问答网

GMT+8, 2025-7-7 05:38 , Processed in 0.082750 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc. Templated By 【未来科技 www.veikei.com】设计

快速回复 返回顶部 返回列表