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
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
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()
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
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进行操作取数
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'])
df.loc['viper']
max_speed 4
shield 5
Name: viper, dtype: int64
df.loc[['cobra','viper']]
max_speed shield
cobra 1 2
viper 4 5
df.loc['cobra','shield']
df.loc['cobra':'sidewinder','shield']
cobra 2
viper 5
sidewinder 8
Name: shield, dtype: int64
df.loc[df['shield']>=6]
max_speed shield
sidewinder 7 8
df.loc[df['shield']>=3,'max_speed']
viper 4
sidewinder 7
Name: max_speed, dtype: int64
df.loc[lambda df: df['shield'] <= 5]
max_speed shield
cobra 1 2
viper 4 5
df.loc[['viper', 'sidewinder'], ['shield']] = 50
cobra 1 2
viper 4 50
sidewinder 7 50
df.loc['viper']=10
df.loc[:, 'max_speed'] = 30
df
max_speed shield
cobra 30 2
viper 30 50
sidewinder 30 50