pandas 数据分析2:DataFrame 属性和检索

本文详细介绍了PandasDataFrame的基本属性如索引、列标签和数据类型,以及常用的数据信息获取方法如`info()`,以及行与列的检索技巧,包括`head()`、`tail()`、`loc`和`iloc`等函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DataFrame 属性和检索

建立一个随机数据(DataFrame),其行标签为年份,列标签为10天干,数据值为1~100的随机整数。

import pandas as pd

import numpy as np


years = pd.date_range("2002", periods=21, freq="A").year
# years

columns = list("甲乙丙丁戊己庚辛壬癸")

df = pd.DataFrame({ col: pd.Series(np.random.randint(1, 100, len(years)), index=years) for col in columns })
# df

数据信息总览

数据信息 - DataFrame.info()

默认参数全为空值且顾名思义。

df.info(verbose=None, buf=None, max_cols=None, memory_usage=None, show_counts=None)


df.info(max_cols=4)  # 10列,大于4,不输出列的详情

<class ‘pandas.core.frame.DataFrame’>
Index: 21 entries, 2002 to 2022
Columns: 10 entries, 甲 to 癸
dtypes: int32(10)
memory usage: 924.0 bytes

行列标签 - DataFrame.index & DataFrame.columns

行标签和列标签都是基本属性。

df.index

df.columns

数据类型 - Data.dtypes

一个由各列数据类型组成的 Series

df.dtypes

甲 int32
乙 int32

癸 int32
dtype: object

其他【查看数据描述】的常用属性与方法
  1. DataFrame.values,值部分,是一个数组,建议使用 DataFrame.to_numpy()
  2. DataFrame.axes,坐标,即行列标签。
  3. DataFrame.ndim,维度,2;Series - 1。
  4. DataFrame.shape,形状,行数和列数组成的一个元组。
  5. DataFrame.size,行数×列数。
  6. DataFrame.memory_usage(),返回各列内存使用情况组成的 Series
  7. DataFrame.empty,是否为空,布尔值。

检索方法

首尾部检索方法语法简单,DataFrame 调用则返回一个 DataFrameSeries 亦然。

首部 - DataFrame.head(n=5)

n 是一个默认参数,默认为5,此方法相当于 DataFrame[:n],即对首部的 n 行进行检索。

df.head()  # df[:5]

df.head(4)  # df[:4]

type(df.head())  # DataFrame

尾部 - DataFrame.tail(n=5)

尾部检索相当于 DataFrame[-n:]

df.tail()  # df[-5:]

df.tail(10)  # df[-10:]

行与列的检索

经常来说,检索具有一定属性的某行(列)、某些行(列)是很必要的。

  1. 一列
  • 通过列标签直接索引,DataFrame[列标签],返回一个 Series 对象。
  1. 多列
  • 通过标签列表直接索引,DataFrame[col_list],返回一个 DataFrame 对象。
  1. 一行
  • 通过定位行标签或定位行数,见 here
  1. 多行
  • 通过行切片语法切片,DataFrame[0:3],返回一个切片的 DataFrame
定位检索

这里新建一个标签易于分辨的 DataFrame

df2 = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 0, 0]], index=list("甲乙丙丁"), columns=['A', 'B', 'C'])

df2.loc["甲"]
df2.loc[["甲", "丁"]]
df2.loc["甲":"丙"]

df2.loc[["甲", "乙"], ["A", "B"]]
df2.loc["甲":"丙", ["A", "B"]]
df2.loc["乙", "A"]  # df2.at["乙", "A"]

df2.iloc[1]
df2.iloc[[0, 2]]
df2.iloc[1:]

df2.iloc[[0, 2], [1, 2]]
df2.iloc[[0, 2], :]
df2.iloc[2, 1]  # df2.iat[2, 1]

定位标签 - loc/at

根据标签进行定位。

  1. 获取某行 DataFrame.loc[行标签]

  2. 获取多行

  • DataFrame.loc[[行标签1, 行标签2, ...]],和多维数组的定位类似。
  • DataFrame.loc[行标签m: 行标签n],和切片类似的语法。注意,冒号的前一个参数不写默认从第一个开始,冒号后一个参数不写默认到最后一个结束。
  1. 行列标签结合定位:获取指定列标签的多行数据
  • DataFrame.loc[行标签们, 列标签们],其中标签们的格式可以是:列表格式 [标签1, 标签2, ...] 或切片格式 标签m: 标签n
  • 特别的,DataFrame[行标签, 列标签] 定位到一个指定位置,一般使用 at
定位位置 - iloc/iat

根据行列位置进行定位。注意行列数都是从0开始数的。

  1. 获取某行 DataFrame.iloc[行数]

  2. 获取多行

  • DataFrame.iloc[[行数1, 行数2, ...]],和多维数组的定位类似。
  • DataFrame.iloc[行数m: 行数n],和切片类似的语法。注意,冒号的前一个参数不写默认从第一个开始,冒号后一个参数不写默认到最后一个结束。
  1. 行列标签结合定位:获取指定列标签的多行数据
  • DataFrame.iloc[行数们, 列数们],其中标签们的格式可以是:列表格式 [数1, 数2, ...] 或切片格式 数m: 数n
  • 特别的,DataFrame[行数, 列数] 定位到一个指定位置,一般使用 iat
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值