python3:Pandas库中的DataFrame中所有函数解读 - 中文官方文档解析

这篇博客深入解析了Pandas库中DataFrame的数据结构,涵盖了轴数、转换、索引、函数应用、统计计算等多个方面。文章通过详细的例子介绍了如df.axes、df.isna、df.loc和df.iloc等属性和方法的用法,以及如何进行数据选择、函数应用、缺失数据处理和数据重塑等操作。

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

pandas官方文档
数据结构还包含标记的轴(行和列)。 算术运算在行和列标签上对齐。 可以看作是Series对象的类似dict的容器。
语法结构:
pandas.DataFrame(data=None, index: Optional[Collection] = None, columns: Optional[Collection] = None, dtype: Optional[Union[str, numpy.dtype, ExtensionDtype]] = None, copy: bool = False)
parameter:

1. 属性和底层数据:

1.1 轴数axes:

DataFrame.index row行索引
DataFrame.columns 数据框的列标签
DataFrame.dtypes 返回数据框的dtypes
DataFrame.select_dtypes(self[, include, exclude]) 根据数据框列的dtypes返回DataFrame列的子集。
DataFrame.values 将DataFrame转换为Numpy数组表示形式
DataFrame.axes 返回一个表示DataFrame轴的列表
1.1.1 df.axes
import pandas as pd
df = pd.DataFrame({
   
   'col1': [1, 2], 'col2': [3, 4]})
df.axes
#Out[2]: [RangeIndex(start=0, stop=2, step=1), Index(['col1', 'col2'], dtype='object')]
#表示索引的起始和结束点及索引步次,列标签信息,数据框值的dtype
DataFrame.ndim 返回一个表示轴数/数组维数的整数,即有几列
DataFrame.size 返回一个int表示此对象中元素的数量
DataFrame.shape 返回一个tuple元组,表示数据框的纬度,几行几列
DataFrame.empty 指示DataFrame是否为空
1.1.2 df.ndim
import pandas as pd
df = pd.DataFrame({
   
   'col1': [1, 2,3], 'col2': [3, 4,5]})
df.ndim
#Out[6]: 2

1.2 Conversion:

DataFrame.astype(self, dtype, copy, errors)
DataFrame.convert_dtypes(self, …)
DataFrame.infer_objects(self)
DataFrame.copy(self, deep)
DataFrame.isna(self) 检测缺失值。返回的是对值的判断结果True or False
DataFrame.notna(self) 检测现有(非缺失)值。返回的是对值的判断结果True or False
DataFrame.bool(self)
1.2.1 df.isna
import pandas as pd
import numpy as np
df = pd.DataFrame({
   
   'age': [5, 6, np.NaN],
                   'born': [pd.NaT, pd.Timestamp('1939-05-27'),
                            pd.Timestamp('1940-04-25')],
                   'name': ['Alfred', 'Batman', ''],
                   'toy': [None, 'Batmobile', 'Joker']})
df.isna()
#Out[8]: 
     age   born   name    toy
0  False   True  False   True
1  False  False  False  False
2   True  False  False  False

1.3 Indexing, iteration:

DataFrame.head(self, n) 返回数据框的前n行,默认是5行
DataFrame.at 访问行/列标签对的单个值
DataFrame.iat
DataFrame.loc 通过标签或布尔数组访问一组行和列
DataFrame.iloc 基于整数位置的索引,用于按位置进行选择
DataFrame.insert(self, loc, column, value[, …]) 将列插入DataFrame中的指定位置
DataFrame.iter(self)
DataFrame.items(self)
DataFrame.iteritems(self)
DataFrame.keys(self)
DataFrame.iterrows(self)
DataFrame.itertuples(self[, index, name])
DataFrame.lookup(self, row_labels, col_labels)
DataFrame.pop(self, item)
DataFrame.tail(self, n) 返回最后n行
DataFrame.xs(self, key[, axis, level])
DataFrame.get(self, key[, default]) 从对象获取给定键的项目(例如:DataFrame列)
DataFrame.isin(self, values) DataFrame中的每个元素是否包含在值中
DataFrame.where(self, cond[, other, …])
DataFrame.mask(self, cond[, other, inplace, …])
DataFrame.query(self, expr[, inplace])
1.3.1 df.at
#.at
#.at与.loc相似,两者都提供基于(label)标签的查找。如果只需要在DataFrame或Series中获取或**设置单个值,请使用at**
import pandas as pd
import numpy as np
df = pd.DataFrame([[0, 2, 3], [0, 4, 1], [10, 20, 30]],
                  index=[4, 5, 6], columns=['A', 'B', 'C'])
df.at[4, 'B']#要给出要查找数据的精确位置,第几行第几列
1.3.2 df.loc

.loc []主要基于标签,但也可以与布尔数组一起使用。
允许的输入:

  • 单个标签,例如 5或’a’,(请注意5被解释为索引的标签,而不是沿索引的整数位置);
  • 标签label的列表或数组,例如 [‘a’,‘b’,‘c’];
  • 带有标签的切片对象,例如 ‘a’:‘f’。【注意:此切片的开始和停止都包括在内】;
  • 与所切片的轴的长度相同的布尔数组,例如 [True,False,True];
  • 一个带有一个参数的可调用函数(调用Series或DataFrame),并且返回用于索引的有效输出(上述之一)
    如果找不到任何项目,会报keyerror

Examples:
(1)通过行标签或列标签对DataFrame或series进行操作取数

#按行匹配两个excel中的数据,以左边的表为基准
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
     index=['cobra', 'viper', 'sidewinder'],
     columns=['max_speed', 'shield'])

#单个标签(行名或列名)。这会将行作为series返回
df.loc['viper']  #返回列名为viper的所有行
#Out[16]: 
max_speed    4
shield       5
Name: viper, dtype: int64

#标签列表。注意使用[[]]返回一个DataFrame
df.loc[['cobra','viper']]
#Out[15]: 
       max_speed  shield
cobra          1       2
viper          4       5

#行和列的单个标签
df.loc['cobra','shield']
#Out[17]: 2

#切片带有行标签和单个标签列。如上所述,请注意切片的开始和结束都包括在内,这与iloc只包含左端点不同
df.loc['cobra':'sidewinder','shield']
#Out[19]: 
cobra         2
viper         5
sidewinder    8
Name: shield, dtype: int64

#有条件的返回布尔序列。shield列大于等于的所有行都会被返回
df.loc[df['shield']>=6]
#Out[20]: 
            max_speed  shield
sidewinder          7       8

#有条件的返回带有指定列标签的布尔系列。
df.loc[df['shield']>=3,'max_speed']
#Out[22]: 
viper         4
sidewinder    7
Name: max_speed, dtype: int64

#返回可调用的布尔系列
df.loc[lambda df: df['shield'] <= 5] #lambda的用法:df表示函数的输入,:后面表示函数lambda的输出
#Out[26]: 
       max_speed  shield
cobra          1       2
viper          4       5

#设定值。为与标签列表匹配的所有项目设置值
df.loc[['viper', 'sidewinder'], ['shield']] = 50
#[OUT]:            max_speed  shield
cobra               1       2
viper               4      50
sidewinder          7      50

#给数据框整行设置值
df.loc['viper']=10

#给数据框整列赋值
df.loc[:, 'max_speed'] = 30
df
#Out[28]: 
            max_speed  shield
cobra              30       2
viper              30      50
sidewinder         30      50

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值