- pandas中最主要的两个数据结构:Series、DataFrame
- 一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。
import pandas as pd obj = pd.Series([4, 7, -5, 3]) obj """ 输出 0 4 1 7 2 -5 3 3 dtype: int64 """
- Series 的字符串表现形式为:索引在左边,值在右边。由于我们没有为数据指定索引,会自动创建0到N-1的整数型索引。可以通过Series 的value和index属性获取其数组表示形式和索引对象
obj.values """ 输出 array([ 4, 7, -5, 3], dtype=int64) """ obj.index """ 输出 RangeIndex(start=0, stop=4, step=1) """
- 创建带标记索引的 Series
obj2 = pd.Series([4, 7], index=['d', 'e']) obj2 """ 输出 d 4 e 7 dtype: int64 """
- 可以通过索引的方式选取Series中的单个或一组值
obj2['e'] """ 输出 7 """ obj2[['e','d']] """ 输出 e 7 d 4 dtype: int64 """
- 通过字典创建 Series
sdata = {'ohio': 35000, 'tesas': 71000}
obj3 = pd.Series(sdata)
obj3
"""
输出
ohio 35000
tesas 71000
dtype: int64
"""
- 如果只传入字典 , Series 中索引就是原字典的键(有序排列)。可以传入排序号的字典键以改变序列。
states = ['califor', 'tesas', 'ohio'] obj4 = pd.Series(sdata, index=states) obj4 """ 输出 califor NaN tesas 71000.0 ohio 35000.0 dtype: float64 """DataFrame
DataFrame 是一个表格型的数据结构,它包含有一组有序的列,每列可以是不同的值类型。
DataFrame 既有行索引也有列索引。DataFrame 中的数据是以一个或多个 二维块存放的。
- 传入一个由等长列表或NumPy数组组成的字典,结果DataFrame会自动加上索引
data = {'state': ['ohio','ohio','nevada','nevada'],
'year': [2000,2001,2001,2002],
'pop': [1.5,1.7,2.4,2.9]}
frame = pd.DataFrame(data)
frame
输出
- 指定序列,列在数据中不存存在将会在结果中产生缺失值
frame2 = pd.DataFrame(data, columns=['year','state','pop', 'debt'], index=['one','two','three','four']) frame2
输出
- 获取列,返回的是 Series 类型的序列
frame2['state']
输出
- 获取行,返回的是 Series 类型的序列
frame2.loc['one']
输出
- 将列表或数组赋值给某个列时,长度必须跟DataFrame的长度匹配。如果赋值的是一个Series,就会精确匹配DataFrame的索引
val = pd.Series([-1.2,-1.5], index=['two','four']) frame2['debt'] = val frame2
输出
- 传入嵌套字典构造DataFrame,外层字典的键作为列,内层键则作为索引。
pop = {'ohio':{'2000':1.5,'2001':1.7}, 'nevada':{'2001':2.4}}
frame3 = pd.DataFrame(pop)
frame3
输出
- 重新索引,将创建一个符合新索引的对象,ffill 实现前向填充。
obj3 = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4]) obj3 obj3.reindex(range(6), method='ffill')



