pandas¶
In [1]:
Copied!
import pandas as pd
import numpy as np
import pandas as pd
import numpy as np
数据结构 ¶
pandas 在 NumPy 的 ndarray 对象基础上封装了三个基本数据结构 Series、 DataFrame 和 Index。 Pandas 在这些基本数据结构上实现了许多功能和方法。
Series¶
Series 对象是一个带索引标签(Labels)的一维数组,打印查看很像只有一列的表,可以看做向量。
pd.Series(data=None, index=None, dtype: 'Dtype | None' = None, name=None, copy: 'bool | None' = None, fastpath: 'bool | lib.NoDefault' = <no_default>) -> 'None'
In [ ]:
Copied!
# Series 其实就是一个特殊的字典,但是支持切片等操作
# data 可以为标量(按照索引长度扩展),列表(索引默认为range(len(data))),字典(可以显示索引筛选需要的数据,原本不存在的数据 value 为 NaN)
# 如果索引和值数量长度不匹配,将会报错
pd.Series(data=1, index=range(5))
pd.Series(data=range(5), index=range(1, 6))
pd.Series(data=dict(a=1, b=2, c=3), index=['a', 'b', 1]) # 字典创建
# Series 其实就是一个特殊的字典,但是支持切片等操作
# data 可以为标量(按照索引长度扩展),列表(索引默认为range(len(data))),字典(可以显示索引筛选需要的数据,原本不存在的数据 value 为 NaN)
# 如果索引和值数量长度不匹配,将会报错
pd.Series(data=1, index=range(5))
pd.Series(data=range(5), index=range(1, 6))
pd.Series(data=dict(a=1, b=2, c=3), index=['a', 'b', 1]) # 字典创建
Out[ ]:
a 1.0 b 2.0 1 NaN dtype: float64
In [ ]:
Copied!
# 属性
series = pd.Series(['a', 'b', 'c'], index=range(1, 4))
series.index, series.values, series.dtype, series.shape, series.ndim, series.size, series.empty, series[1] # 想要更改时对应赋值就好
# 属性
series = pd.Series(['a', 'b', 'c'], index=range(1, 4))
series.index, series.values, series.dtype, series.shape, series.ndim, series.size, series.empty, series[1] # 想要更改时对应赋值就好
Out[ ]:
(RangeIndex(start=1, stop=4, step=1), array(['a', 'b', 'c'], dtype=object), dtype('O'), (3,), 1, 3, False, 'a')
DataFrame¶
将 Series 类比为带索引的一维数组(或者含有一列数据的带有行标签的单列表
将 Series 类比为一个字典,DataFrame 就可以看作是一个以 Series 为 values 的字典, 而字典的键就是 DataFrame 的列名。
DataFrame(data=None, index: 'Axes | None' = None, columns: 'Axes | None' = None, dtype: 'Dtype | None' = None, copy: 'bool | None' = None) -> 'None'
In [86]:
Copied!
# DataFrame 在常用的传参上就是多了一个 columns 参数,作为列名
# data 可以为标量(按照索引长度扩展),二维数组,以 dict/Series 为值的列表/字典(可以显示索引筛选需要的数据,原本不存在的数据 value 为 NaN)
id_dict = {'John': 100,'Tom' : 101,'Bill': 102}
age_dict = {'John': 20,'Tom' : 21,'BilL': 19}
pd.DataFrame(data=1, index=id_dict.keys(), columns=data.keys())
pd.DataFrame(data=np.ones(3, dtype=[('A', 'i8'), ('B', 'f8')]))
pd.DataFrame(data=np.arange(6).reshape(3, 2), columns=['id', 'age'])
pd.DataFrame(data=[age_dict, id_dict])
pd.DataFrame(data=dict(id=id_dict, age=age_dict), columns=data.keys())
# DataFrame 在常用的传参上就是多了一个 columns 参数,作为列名
# data 可以为标量(按照索引长度扩展),二维数组,以 dict/Series 为值的列表/字典(可以显示索引筛选需要的数据,原本不存在的数据 value 为 NaN)
id_dict = {'John': 100,'Tom' : 101,'Bill': 102}
age_dict = {'John': 20,'Tom' : 21,'BilL': 19}
pd.DataFrame(data=1, index=id_dict.keys(), columns=data.keys())
pd.DataFrame(data=np.ones(3, dtype=[('A', 'i8'), ('B', 'f8')]))
pd.DataFrame(data=np.arange(6).reshape(3, 2), columns=['id', 'age'])
pd.DataFrame(data=[age_dict, id_dict])
pd.DataFrame(data=dict(id=id_dict, age=age_dict), columns=data.keys())
Out[86]:
id | age | |
---|---|---|
John | 100.0 | 20.0 |
Tom | 101.0 | 21.0 |
Bill | 102.0 | NaN |
BilL | NaN | 19.0 |
In [87]:
Copied!
## 属性
df = pd.DataFrame(data=dict(id=id_dict, age=age_dict), columns=data.keys())
df.index, df.columns, df.values, df.shape
## 属性
df = pd.DataFrame(data=dict(id=id_dict, age=age_dict), columns=data.keys())
df.index, df.columns, df.values, df.shape
Out[87]:
(Index(['John', 'Tom', 'Bill', 'BilL'], dtype='object'), Index(['id', 'age'], dtype='object'), array([[100., 20.], [101., 21.], [102., nan], [ nan, 19.]]), (4, 2))