持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情
1 前言
Python 数据分析有两个非常重要的类库,一个是 Numpy, 一个是 Pandas ,在之前的分享中已经介绍了抓取股票k线信息的方式,在本次的分享中,将会介绍指数,场内基金,股票数据的抓取方式,在这个过程中,会涉及一些 Pandas 的的一些常规操作。
2 数据获取
在数据获取的过程中,依然采用东方某富的网址获取数据 k 线数据,具体内容参考 Python爬虫-获取股票的k线图,在这个过程中将分别上证指数、ETF基金、东方某富的 k 线数据,用于展示相同日期的涨跌幅信息。
# 指数信息 上证指数
idx_list = ['1.000001']
#ETF和股票 上证50ETF 沪深300ETF 证券ETF 酒ETF 东方某富
stk_list = ['510050', '510300', '512880', '512690', '300059']
3 数据组装
在获取完数据后就需要对数据进行组装,按照数据获取的方式,先获取指数信息,然后再获取ETF和股票信息数据。
在下图中,000001
为上证指数,如果在 idxList 不存在上证指数则进行添加,先获取指数的信息,再获取股票的信息
# data_list 为列表 stock_info 为代码和名称信息
data_list, stock_info = query_idx_kline_pd(nd, klt=klt)
获取到数据后,需要提取 date
和 rate
信息,Pandas 提取数据时用到的方式为
# 提取数据中的 date 和 rate 信息
result = data_list[['date', 'rate']]
提取到数据后,由于需要并列多个数据的信息,所以需要将每个rate改名为其数据名称以进行区分,这里使用到了 Pandas 的 rename 命令。
# 将 rate 列进行替换,替换成数据名称信息
result.rename(columns={"rate": name}, inplace=True)
在获取到其它数据时,需要将数据进行合并,需要调用 merge 方法, on 指的是数据的合并条件,类似于数据库中 join 的条件 ,how 指的是数据的合并方式,可以是 left right 和 inner。
# 将数据进行 merge 操作
result = pd.merge(result, tmp, on=['date', 'date'], how='left')
具体的代码操作如下图所示:
在调用数据合并后,需要将数据进行展示,在此之前需要将date 数据类型进行转换,其方式为 apply, 将date 类型转换为string 类型。
dtypes 是打印数据类型, T 表示数据的转置,也就是行转列,列转行。
4 数据展示
在完成前述操作后,需要将数据进行打印,在打印数据前,需要做一些配置操作,如下所示:
# 显示所有行和列,否则会采用... 进行展示
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
# 数据展示时,列标题和数据不能错行
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
# 打印数据时,如果数据列较多,则进行完全展示,不需要进行换行
pd.set_option('expand_frame_repr', False)
# See the caveats in the documentation 屏蔽错误信息内容
pd.set_option('mode.chained_assignment', None)
数据在行列转换前的展示内容
数据行列转置后的展示方式
5 总结
在本文中,采用了数据抓取的方式进行对比展示,其中使用 Pandas 进行操作展示,学习到了 Pandas 处理数据的一些操作。