当前位置: 首页 > news >正文

1分钟搞定Pandas DataFrame创建与索引

1.DataFrame介绍

DataFrame 是一个【表格型】的数据结构,可以看作是【由Series组成的字典】(共用同一个索引)。DataFrame 由按一定顺序排列的多列数据组成。设计初衷是将 Series 的使用场景从一维扩展到多维。DataFrame 既有行索引,也有列索引。

  • 行索引:index

  • 列索引:columns

  • 值:values(NumPy的二维数组)

2.DataFrame的创建

  • 最常见的方法是传递一个字典来创建。DataFrame 以字典的创建作为每一【列】的名称,以字典的值(一个数组)作为每一列。此外,DataFrame 会自动加上每一行的索引(和Series一样)。

  • 同Series一样,若传入的列与字典的键不匹配,则相应的值为NaN。

d = {"name":["tfos","Python","Pandas"],"age":[11,30,20],
}
df = pd.DataFrame(d)
df
# 执行结果
# 每一行是一条数据
# 每一列表示一种属性
  • DataFrame的基本属性和方法:

    • values 值,二维 ndarray 数组

    • columns 列索引

    • index 行索引

    • shape 形状

    • head() 查看前几条数据,默认5条

    • tail() 查看后几条数据,默认5条

display(df)
# 二维数组的数据
df.values
# 执行结果
array([['tfos', 11],['Python', 30],['Pandas', 20]], dtype=object)# 列索引
df.columns
# 执行结果
Index(['name', 'age'], dtype='object')# 行索引
df.index
# 执行结果
RangeIndex(start=0, stop=3, step=1)# 形状:3行2列
df.shape
# 执行结果
(3, 2)# 查看前2条数据
df.head(2)
# 查看最后2条数据
df.tail(2)
# 设置 index 行索引
df.index = list("ABC")
df
# 设置 columns 列索引
df.columns = ["name2","age2"]
df
# 创建 DataFrame 时同时设置行和列的索引
d = {"name":["tfos","Python","Pandas"],"age":[11,30,20]
}
df = pd.DataFrame(d,index=list("ABC"))
df
  • 其他创建 DataFrame 的方式

df = pd.DataFrame(data = np.random.randint(10,100,size=(4,6)),index = ["小明","小红","小黄","小绿"],columns = ["语文","数学","英语","化学","物理","生物"]
)
df

3.对列进行索引

  • 通过类似字典的方式

  • 通过属性的方式

可以将 DataFrame 的列获取为一个 Series。返回的 Series 拥有原 DataFrame 相同的索引,且 name 属性也已经设置好了,就是相应的列名。

df = pd.DataFrame(data = np.random.randint(10,100,size=(4,6)),index = ["小明","小红","小黄","小绿"],columns = ["语文","数学","英语","化学","物理","生物"]
)
df# Series类型
df.语文
# 执行结果
小明    47
小红    32
小黄    12
小绿    33
Name: 语文, dtype: int32df["语文"]
# 执行结果
小明    47
小红    32
小黄    12
小绿    33
Name: 语文, dtype: int32# 使用2个中括号得到的类型是 DataFrame
df[["语文","化学"]]df[["语文"]]

4.对行进行索引

  • 使用 .loc[] 加 index 来进行行索引

  • 使用 .iloc[] 加整数来进行行索引

同样返回一个Series, index为原来的columns。

# 不可以直接取行索引
# df.小明
# df["小明"]
# DataFrame默认是先取列索引
# 取行索引值为 Series 类型
df.loc["小明"]
# 执行结果
语文    47
数学    63
英语    62
化学    17
物理    84
生物    24
Name: 小明, dtype: int32df.iloc[0]
# 执行结果
语文    47
数学    63
英语    62
化学    17
物理    84
生物    24
Name: 小明, dtype: int32# 使用2个中括号取到的值是 DataFrame 类型
df.loc[["小明","小绿"]]df.loc[["小明"]]df.iloc[[0,-1]]df.iloc[[0,3]]df.iloc[[0]]

5.对元素索引的方法

  • 使用列索引

  • 使用行索引(iloc[3,1]相对于两个参数;iloc[[3,3]]里面的[3,3]看作一个参数)

  • 使用 values 属性(二维 NumPy 数组)

# 先取列,再取行
df["语文"]["小明"]
# 执行结果
47df["语文"][0]
# 执行结果
47df.语文[0]
# 执行结果
47df.语文.小明
# 执行结果
47# 先取行,再取列
df.loc["小明"]["语文"]
# 执行结果
47df.loc["小明","语文"]
# 执行结果
47df.loc["小明"][0]
# 执行结果
47df.iloc[0][0]
# 执行结果
47df.iloc[0,0]
# 执行结果
47df.iloc[0]["语文"]
# 执行结果
47

http://www.lryc.cn/news/346527.html

相关文章:

  • 【贪心算法】哈夫曼编码Python实现
  • 【RAG 博客】RAG 应用中的 Routing
  • 鸿蒙ArkUI:【编程范式:命令式->声明式】
  • 【练习2】
  • oracle 新_多种块大小的支持9i
  • Collections工具类
  • java-函数式编程-jdk
  • qiankun实现微前端,vue3为主应用,分别引入vue2和vue3微应用
  • 写了 1000 条 Prompt 之后,我总结出了这 9 个框架【建议收藏】
  • 事件代理 浅谈
  • 一对多在线教育系统,疫情后,在线教育有哪些变革?
  • RabbitMQ(安装配置以及与SpringBoot整合)
  • JUC下的BlockingQueue详解
  • ChatGPT理论分析
  • 算法提高之魔板
  • 服务器内存占用不足会怎么样,解决方案
  • elasticsearch文档读写原理大致分析一下
  • 1 开发环境
  • 云视频,也称为视频云服务,是一种基于云计算技术理念的视频流媒体服务
  • [Vision Board创客营]--使用openmv识别阿尼亚
  • 【Linux:lesson1】的基本指令
  • 20240511日记
  • 蓝桥杯成绩已出
  • .kat6.l6st6r勒索病毒数据怎么处理|数据解密恢复
  • Spring Batch 是什么?主要用于什么场景?
  • SQL-慢查询的定位及优化
  • 练习题(2024/5/11)
  • linux系统服务器中常见故障及排查方法
  • 产品人生(5):从“敏捷开发”到“四化时间管理法”
  • 超级好看的html网站维护源码