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

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Pandas是一个用于数据处理和分析的Python库。它提供了两个主要的数据结构Series和DataFrame。 Series是一个一维的标数组,类似于带有标签的数组。你可以使用方式创建一个Series: ```python import pandas as pd data = [1, 2, 3, , 5] series =.Series(data) ``` 是一个二维的表格型数据结构,可以看作是由多个组成的字典。你可以使用以下方式创建一个DataFrame: ```python import pandas as pd data = {'Name': ['John', 'Mike', 'Sarah'], 'Age': [28, 32, 25], 'City': ['New York', 'London', 'Paris']} df = pd.DataFrame(data) ``` 下面是一些常用的Pandas数据处理方法: 1. 数据检索:你可以使用以下方式对Series和DataFrame进行数据检索和筛选: - 使用索引检索单个元素或切片:`series[0]`、`df['Name']` - 使用条件筛选:`df[df['Age'] > 30]` - 使用位置筛选:`df.iloc[0]` 2. 数据清洗:你可以使用以下方法清洗数据: - 缺失值处理:`df.dropna()`、`df.fillna(value)` - 重复值处理:`df.drop_duplicates()` 3. 数据转换:你可以使用以下方法对数据进行转换: - 类型转换:`df['Age'] = df['Age'].astype(float)` - 数据排序:`df.sort_values(by='Age')` - 数据分组:`df.groupby('City').mean()` 4. 数据计算:你可以使用以下方法进行数据计算: - 统计计算:`df.describe()`、`df.mean()` - 数值计算:`df['Age'] + 1`、`df['Age'].sum()` 这只是Pandas提供的一小部分方法,还有很多其他功能和方法可以帮助你进行数据处理和分析。你可以查阅Pandas官方文档以获取更详细的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值