时间序列
通过date_range函数生成序列并加入数据中,例如创建从2019年9月21日开始的连续4天的时间序列。使用pandas包中的read_csv()方法读取之前保存的学生数据,更新数据后可以看到生成的时间序列已经加入到了数据框中。
创建
myTime=pd.date_range('2019/9/21', periods=4, freq='7D')
print('产生的时间序列是:\n',myTime)
df10=df1
print('设置索引前的df1是:\n',df1)
df10.index=myTime
print('设置索引后的df10是:\n',df10)
产生的时间序列是:
DatetimeIndex(['2019-09-21', '2019-09-28', '2019-10-05', '2019-10-12'], dtype='datetime64[ns]', freq='7D')
设置索引前的df1是:
name no age gender
id
0 Tom 001 16 m
1 Lily 002 16 f
2 Cindy 003 15 f
3 Petter 004 16 m
设置索引后的df10是:
name no age gender
2019-09-21 Tom 001 16 m
2019-09-28 Lily 002 16 f
2019-10-05 Cindy 003 15 f
2019-10-12 Petter 004 16 m
时间序列
查询
print('\n根据时间序列索引得到的值\n',df10.loc["2019-09-21":"2019-09-30",['gender','age','name']])
根据时间序列索引得到的值
gender age name
2019-09-21 m 16 Tom
2019-09-28 f 16 Lily
查询总结
1.pandas的索引
* 注意df.iloc、df.loc、df[]的区别
1.四种索引形式:
使用位置做索引
使用列表做索引
使用切片做索引
使用bool类型索引
2.df.loc与df.iloc
2.1 选取行
df.loc 是基于索引值的,切片是左闭右闭的
df.iloc 是基于位置的,切片是左闭右开的
2.2 选取行和列
[,] 逗号左边索引行,逗号右边索引行(左值和右值均可为空)
df.loc[,]
df.iloc[,] 方括号内必须均为数字
如df.loc[0:5,'年龄'] 等同于 df['年龄'].iloc[0:5]
2.3 选取列
df['列名'] df['列名','列名2',...]
df.loc[df['年龄']>18]
3.df.loc与df
3.1 语法上:
相同点:选取行时,即df.loc[] 等同于 df[]
不同点:切片是左闭右闭,df切片是左闭右开的
4.总结
df
*选取列(主要):df['列名']选取单列,df['列名','列名2',...]选取多列,
选取行:df是df.loc的选取行的一种简单形式
df.loc
功能强大:主要用于便捷选取行和列,如df.loc[0:3,['性别','年龄']],不需要多次[],还可以对字符类型的列切片
df.iloc
*选取行: 当索引不为0,1,2,3...时,如设置时间为索引,仍然可采用df.iloc[n]的形式
类型转换
DataFrame由于具有相对复杂的结构,故其数据类型转换与其他类型略有不同。
print("DataFrame转ndarray\n",df10.values,
"\nDataFrame转series\n",df10['gender'])
DataFrame转ndarray
[[0 'Tom' 1 16 'm']
[1 'Lily' 2 16 'f']
[2 'Cindy' 3 15 'f']
[3 'Petter' 4 16 'm']]
DataFrame转series
2019-09-21 m
2019-09-28 f
2019-10-05 f
2019-10-12 m
Freq: 7D, Name: gender, dtype: object