您的位置:首页 > 科技 > IT业 > 醒醒,别睡了...讲《数据分析pandas库》了—/—<3>

醒醒,别睡了...讲《数据分析pandas库》了—/—<3>

2024/11/17 5:46:03 来源:https://blog.csdn.net/qq_64603703/article/details/140723574  浏览:    关键词:醒醒,别睡了...讲《数据分析pandas库》了—/—<3>

直接上知识点

一、

1、新建数据框时建立索引

        所有的数据框默认都已经使用从 0 开始的自然数索引,因此这里的"建立索引指的是自定

df = pd.DataFrame( {'varl' : 1.0, ' var2' :[1,2,3,4], 'var3' :['test','python','test','hello'] , 'var4' : 'cons'} , index =[0,1,2,3])

如上部代码所示,创建一个二维数组,其列名为var1,var2,var3,var4,其索引值为0,1,2,3,

因为在创建数据帧时,使用了字典来指定每列的值,在字典中,如果我们只提供了一个值而不是一个列表或数组,那么这个值将被复制到每一行中的相应列。所以'varl':1.0,被复制到了一整列,'cons'这个值也被复制到了var4列的每一行。

其输出结果如图:

2、指定某列为索引列

其使用方法如下:

df.set_index(keys :被指定为索引的列名,复合索引用 list:格式提供drop = True :建立索引后是否删除该列append = False :是否在原索引基础上添加索引,默认是直接替换原索引inplace = False :是否直接修改原数据框 )

例如下列这个例子:

id1=pd.Series([1,2,3,4,5])
id2=pd.Series([5,6,4,12,7])
df=pd.DataFrame({'id':id1,'age':id2})
new_df=df.set_index(keys=['id','age'],drop=False)new_df=df.set_index(keys=['id'],append=True)

        首先建立两个类似一维数组的列表,然后将这两个列表通过DateFrame链接成一个二维数组,之后再通过new_df=df.set_index(keys=['id','age'],drop=False)这串代码中的df.setindex更改索引,其中key指定了id和age两列作为索引列,然后通过drop=False来保留原列,默认是删除,使其id和age这两列不仅成为了索引,而且还多出来两列当做内部元素,其打印结果如下图1,然后new_df=df.set_index(keys=['id'],append=True)代码是对df中指定id这一列为索引,而append则是决定是否在处理好的元素上再增加一个从零开始的索引列,默认是替换原索引。

图1:      图2:

3、将索引还原变量列

用法如下:

df.reset_index(drop = False :是否将原索引直接删除,而不是还原为变量列inplace = False :是否直接修改原数据框)

看实例:

id1=pd.Series([1,2,3,4,5])
id2=pd.Series([5,6,4,12,7])
df=pd.DataFrame({'id':id1,'age':id2})
df.set_index (['id','age'])

        即是直接将df中的两列数组变成索引列,其得到的结果为:

3.1 将索引全部还原为变量

即将原索引增加一列列名为index的列到原数组,然后外面重新定义了一个从0开始的索引

df.reset_index ()

其打印结果如图所示:

3.2 是否删除 index
df.reset_index (drop=True)

默认drop=False,则为上图所示状态,改为True则删除上图中的index列

4、引用和修改索引

注意:索引也是有储存格式的,需要区分数值型和字符串型的引用方式

        df.index:查看索引

4.1 修改索引

本质上和变量列名修改方式相同

如下代码所示即为指定索引列名称为sno

df = pd.DataFrame({'name':['zs','ls','ww'],'level':['vip1','vip2','pm']})
df.index.name='sno'

上示代码结果为:

df2 = pd.read_excel('stu_data.xlsx')
df3 = df2.set_index(keys = '学号')

这里即为导入一个xlsx文件,然后指定其中的列名为‘学号’的列为索引

df4 = pd.read_excel('stu_data.xlsx')
df5 = df2.set_index(keys = ['学号','性别'])
# df5.index.names = ['no','sex']
df5.index.names=[None,None]
df5

df4读取一个文件,df5为指定其中的两列为索引列,然后再通过index.names更改索引列名称

4.2 修改索引值

修改的本质上就是全部替换

df1.index = ['a', 'b', 'c']

5、更新索引

        reindex 则可以使用数据框中不存在的数值建立索引,并据此扩充新索引值对应的索引行/列,同时进行缺失值填充操作。

df.reindex(labels :类数组结构的数值,将按此数值重建索引,非必需copy = True :建立新对象而不是直接更改原 df/series 缺失数据的处理方式method :针对已经排序过的索引,确定数据单元格无数据时的填充方法,非必需pad / ffill:用前面的有效数值填充backfill / bfill:用后面的有效数值填充nearest:使用最接近的数值逬行填充fill_value = np.NaN :将缺失值用什么数值替代limit = None :向前/向后填充时的最大步长)

代码演示:

代码1:指定行索引,打印索引内的内容
import pandas as pd
df = pd.DataFrame({'name':['zs','ls','ww'],'level':['vip1','vip2','pm']})
df.reindex([0,1,3])

定义数组后,用reindex更改索引值为0,1,3,

注意:此时更改了索引值,即只打印这个索引的内容,如果索引没有数据,则打印NaN

代码2:从上一行填充
df.reindex([0,1,2,3],method='ffill')

打印指定索引0,1,2,3的内容,如果没有数据则直接填充上一行的数据

代码3:指定填充代码
df.reindex([0,1,2,3],fill_value="test")

没有值的位置填充指定值:

6、Series的索引和切片

6.1 索引
import numpy as np
import pandas as pd
data=pd.Series([4,3,25,2,3],index=list('abcde'))
data['a'] #根据key获取,其打印结果为4
data[1] #索引获取,其打印结果也是4
data[-1]#打印结果为3
6.2 切片

        如果索引与行名相同都是1,这时候就不知道是按照哪个来获取,所以获取时候使用lociloc

import numpy as np
import pandas as pd
data=pd.Series([4,3,25,2,3],index=list('abcde'))
# data['a':'d'] #其打印结果为带索引名的值为,4,3,25,2
data[2:4] #索引切片,打印带索引名称的值,为25,2
# data[-3:-1] #从后往前取值
data[data>3]  #布尔取值,取列中的大于3的值所对应的行

6.3 lociloc的使用
data=pd.Series([5,3,2,5,9],index=[1,2,3,4,5])
data.loc[1] #指定名称型索引
data.iloc[1] #指定数值的索引

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com