pandas中DataFrame的基本用法
1.pandas的DateFrame的用法:
环境为:python3 + linux + jupyter-notebook
import numpy as np
import pandas as pd
# 使用numpy 生成一个今天我们要练习的数据
# 他是符合正太分布的8支股票5天的涨跌幅数据
stock_day_rise = np.random.normal(0, 1, (10, 5))
2. # 我们打印stock_day_rise的结果是下面这样一组数据:
对于这样的数据展示给用户的效果不太直观, 我们使用pandas的DateFrame来给他操作一下;
new_stock_day_rise = pd.DateFrame(stock_day_rise)
# 得到的结果如下,可以看到这个数据比以前多了一个行列的索引:
3.我们将每一只股票给他单独进行命名:
思路: 使用numpy 的shape方法能够得到他的矩阵的长度
new_stock_day_rise.shape
# 结果为: (8, 5) 股票的名字现在为0,....8 所以我们取他的0下标的值, 进行遍历 将遍历的结果用字符串的方式拼接为股票的新的名字;
stock_code = ['股票' + str(i) for i in range(new_stock_day_rise.shape[0])]
4.将股票的天数也给它命名下 股票的日期是一个时间的序列,我们要实现从前往后的时间还要考虑每月的总天数等,不方便。使用pd.date_range() 这个方法他是用来生成一个连续的时间序列
# 生成一个时间的序列,略过周末非交易日
date = pd.date_range('2018-10-24', periods=stock_day_rise.shape[1], freq='B')
5.重新展示我们的数据
# index代表行索引,columns代表列索引
data = pd.DataFrame(stock_day_rise, index=stock_code, columns=date)
# 展示结果如下,Nan 表示有缺失值的出现, 数据展示的有点不完美; 还是我的方式有问题呢, 请大佬赐教:
6.实现行和列的转换
data.T
7.其他用法
# 打印他的行索引
>>>data.index
Index(['股票0', '股票1', '股票2', '股票3', '股票4', '股票5', '股票6', '股票7'], dtype='object')
# 列索引
>>>data.columns
DatetimeIndex(['2018-10-24', '2018-10-25', '2018-10-26', '2018-10-29',
'2018-10-30'],
dtype='datetime64[ns]', freq='B')
# 直接获取其中array的值
data.values
# 显示前五支股票的数据 如果不补充参数,默认5行。填入参数N则显示后N行
data.head(5)
# 显示后五支股票的数据 如果不补充参数,默认5行。填入参数N则显示后N行
data.tail(5)
8. 修改行列索引的名字
stock_code = ["股票_" + str(i) for i in range(stock_day_rise.shape[0])]
# 必须整体全部修改
data.index = stock_code
......