简介
pandas 是基于NumPy 的一种工具,主要用途是做数据分析,对于初学者,比较常用的就是处理csv或者excel文件
DataFrame数据结构
DataFrame组成
DataFrame 是 Pandas 的重要数据结构之一,也是在使用 Pandas 进行数据分析过程中最常用的结构之一。DataFrame 一个表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型等。其结构如下所示:
index | 名 | 所属 | 属性 |
0 | 刻晴 | 璃月 | 雷 |
1 | 妮露 | 须弥 | 水 |
2 | 纳西妲 | 须弥 | 草 |
最左一列的index是DataFrame的行索引,DataFrame 会自带行标签索引,默认为“隐式索引”即从 0 开始依次递增,行标签与 DataFrame 中的数据项一一对应。数据以行和列形式来表示,其中每一列表示一个属性,而每一行表示一个条目的信息。
常用DataFrame创建方式
目标数据结构:
名 所属 属性 0 刻晴 璃月 雷 1 妮露 须弥 水 2 纳西妲 须弥 草
1. 使用二维列表创建
import pandas as pd datas = [['刻晴','璃月','雷'], ['妮露','须弥','水'], ['纳西妲','须弥','草']] df = pd.DataFrame(datas,columns=['名','所属','属性']) print(df)
(1)二维列表中的每个子列表即为每行的条目数据,columns参数为列标签
(2)列标签与条目数据按位置对应,需要注意的是条目数据(子列表)长度不能超过列标签数量
(3)行标签index无需设置,默认为np.arange(n),n为二维列表的长度
2. 使用字典嵌套列表创建
import pandas as pd datas = {'名':['刻晴','妮露','纳西妲'],'所属':['璃月','须弥','须弥'],'属性':['雷','水','草']} df = pd.DataFrame(datas) print(df)
(1)字典的键为列标签,也就是列名
(2)值为该列对应的数据,以列表形式传入,列表的元素索引与行标签index对应
(3)行标签index无需设置,默认为np.arange(n),n为字典的值中最长列表的长度。也可设置自定义行标签,如下:
import pandas as pd datas = {'名':['刻晴','妮露','纳西妲'],'所属':['璃月','须弥','须弥'],'属性':['雷','水','草']} df = pd.DataFrame(datas,index=['大保底1','大保底2','大保底3']) print(df)
结果为
名 所属 属性 大保底1 刻晴 璃月 雷 大保底2 妮露 须弥 水 大保底3 纳西妲 须弥 草
3.使用列表嵌套字典创建
import pandas as pd datas = [{'名':'刻晴','所属':'璃月','属性':'雷'}, {'名':'妮露','所属':'须弥','属性':'水'}, {'名':'纳西妲','所属':'须弥','属性':'草'}] df = pd.DataFrame(datas) print(df)
(1)列表中的每个子字典为每行的条目数据
(2)子字典中的键为列标签,值为该列所对应的数据
(3)列表中字子字典的索引与行标签index对应
(4)行标签index无需设置,默认为np.arange(n),n为列表的长度(子字典的数量)。也可设置自定义行标签,方式与第二种方法一致
DataFrame数据访问
1.按列标签获取
df的结构如下所示
datas = [['刻晴','璃月','雷'], ['妮露','须弥','水'], ['纳西妲','须弥','草']] df = pd.DataFrame(datas,columns=['名','所属','属性'])
名 所属 属性 0 刻晴 璃月 雷 1 妮露 须弥 水 2 纳西妲 须弥 草
使用df[列标签],即可获取某一列的值,例如
print(df['名'])
结果为:
1 刻晴 3 妮露 5 纳西妲 Name: 名, dtype: object
按列标签获取,获取'名'这一列的数据
2. 按行号切片获取
print(df[0:2])
结果为:
名 所属 属性 1 刻晴 璃月 雷 3 妮露 须弥 水
df的结构同上,此语法可以获取第0行到第2行的数据。注意:
(1)此时必须写行号的切片,若只写一个数字,会被解释为第1中情况的列标签
(2)此切片遵循左闭右开区间规则
3. loc方法
df的结构如下所示
import pandas as pd datas = [['刻晴','璃月','雷'], ['妮露','须弥','水'], ['纳西妲','须弥','草']] df = pd.DataFrame(datas,columns=['名','所属','属性'],index=['1','3','5'])
名 所属 属性 1 刻晴 璃月 雷 3 妮露 须弥 水 5 纳西妲 须弥 草
loc方法的基本语法为:
DateFrame.loc[行标签:列标签]
(1)对于单一行,或者单一列,可以直接传入对应的行标签和列标签,例如:
print(df.loc['1','名'])
结果为:刻晴
注意此时的行标签为自定义的字符串'1','3','5',而非默认的0,1,2
(2)对于连续的多行,或者连续的多列,可以使用类似于切片的语法:[起点标签:终点标签],此时为左闭右闭区间,例如:
print(df.loc['1':'5','名':'属性'])
结果为:
名 所属 属性 1 刻晴 璃月 雷 3 妮露 须弥 水 5 纳西妲 须弥 草
从行标签为'1'的行,到行标签为'5'的行,从列标签为'名'的列到列标签为'属性'的列,按顺序连续取,并且遵循左闭右闭的规则
(3)对于特定的某些行,或者特定的某些列,可以以行标签列表或列标签列表的形式传入,例如:
print(df.loc[['1','5'],['名','属性']])
结果为:
名 属性 1 刻晴 雷 5 纳西妲 草
筛选出行标签为'1'、'5'的行,以及列标签为'名','属性'的列
(4)loc方法中的列标签可以省略,默认取对应行的所有列,例如:
print(df.loc[['1','5']])
结果为:
名 所属 属性 1 刻晴 璃月 雷 5 纳西妲 须弥 草
4. iloc方法
iloc的基本语法为:
DateFrame.iloc[行号:列号]
iloc使用方法和loc基本一致,都可以用直接传入、切片、列表等方式
但iloc和loc的区别在于:
(1)loc中的行和列是标签,而iloc中的行和列是序号,序号从0开始,例如:
名 所属 属性 1 刻晴 璃月 雷 3 妮露 须弥 水 5 纳西妲 须弥 草
行标签是'1'、'3'、'5',列标签是'名'、'所属'、'属性',而行号是0、1、2,列号也是0、1、2
(2)loc切片是左闭右闭区间,而iloc是左闭右开区间
例如想从
名 所属 属性 1 刻晴 璃月 雷 3 妮露 须弥 水 5 纳西妲 须弥 草
得到:
名 所属 1 刻晴 璃月 3 妮露 须弥
两种函数的写法分别为:
loc:
print(df.loc['1':'3','名':'所属'])
iloc:
print(df.iloc[0:2,0:2])
标签:总结,刻晴,df,标签,用法,须弥,妮露,pandas,属性 From: https://www.cnblogs.com/haruyuki/p/17317900.html