TuShare 官方定位是一个财经数据接口包,官网地址为:TuShare。
可以用pip直接安装:
pip install tushare
由于里面对pandas等安装包的依赖,最好是在Anaconda环境下进行安装,不然还要装很多额外的依赖包,而Anaconda已经打包安装好了,相信我,Anaconda用起来会让你爱不释手。
可以根据需要对自己感兴趣的一块看一下,当然可以通过如下代码对里面的大致属性和使用无参数的方法进行查看:
from IPython.core.interactiveshell import InteractiveShell#在jupyter notebook使用,可以使输出看起来比较漂亮
import tushare as ts
InteractiveShell.ast_node_interactivity = 'all' #设置为漂亮的输出样式
for attr in dir(ts):
try:
if hasattr(getattr(ts, attr), '__call__'):
try:
getattr(ts, attr)()
except:
pass
else:
getattr(ts, attr)
except:
pass
输出大概是这个样子的:
当然这些数据目前我只对新上映的电影和电影排名比较感兴趣,因此主要是为了用着一块,
用到的就是这些代码接口:
import tushare as ts
ts.realtime_boxoffice()
ts.day_boxoffice()
ts.day_boxoffice('2017-05-01')
ts.day_cinema()
ts.month_boxoffice()
挺不错的。
# 根据doc对列名进行替换
In [38]: import tushare as ts
...: import pandas as pd
...: pd.set_option('display.width', 100)
...:
In [39]: movies_info = ts.day_boxoffice()
In [40]: movies_info
Out[40]:
AvgPrice AvpPeoPle BoxOffice BoxOffice_Up IRank MovieDay MovieName SumBoxOffice WomIndex
0 33 20 956 -17 1 20 厉害了,我的国 35739
1 37 1 328 -89 2 6 古墓丽影:源起之战 32524
2 33 1 133 -87 3 34 红海行动 351152
3 35 1 105 -86 4 13 黑豹 62409
4 31 1 103 -83 5 6 水形物语 8118
5 34 1 58 -83 6 34 唐人街探案2 336273
6 32 1 49 -89 7 20 小萝莉的猴神大叔 23700
7 35 1 15 -81 8 20 三块广告牌 5860
8 30 1 13 -78 9 20 比得兔 14453
9 29 1 12 -71 10 6 大坏狐狸的故事 1170
In [41]: movies_doc = ts.day_boxoffice.__doc__
In [42]: movies_doc
Out[42]: '\n 获取单日电影票房数据\n 数据来源:EBOT艺恩票房智库\n Parameters\n ------\n date:日期,默认为上一日\n retry_count : int, 默认 3\n 如遇网络等问题重复执行的次数\n pause : int, 默认 0\n 重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题\n return\n -------\n DataFrame \n AvgPrice 平均票价\n AvpPeoPle 场均人次\n BoxOffice 单日票房(万)\n BoxOffice_Up 环比变化 (%)\n IRank 排名\n MovieDay 上映天数\n MovieName 影片名 \n SumBoxOffice 累计票房(万) \n WomIndex 口碑指数 \n '
In [43]: from itertools import dropwhile
In [44]: movies_doc = list(dropwhile(lambda x: 'DataFrame' not in x, movies_doc.split(' ')))
In [46]: movies_doc = list(filter(lambda x: x.strip(), movies_doc))
In [47]: movies_doc
Out[47]:
['DataFrame',
'AvgPrice',
'平均票价\n',
'AvpPeoPle',
'场均人次\n',
'BoxOffice',
'单日票房(万)\n',
'BoxOffice_Up',
'环比变化',
'(%)\n',
'IRank',
'排名\n',
'MovieDay',
'上映天数\n',
'MovieName',
'影片名',
'SumBoxOffice',
'累计票房(万)',
'WomIndex',
'口碑指数']
In [48]: movies_doc = movies_doc[1:]
In [49]: movies_doc = [ele.strip() for ele in movies_doc if not ele.startswith('(')]
In [50]: movies_doc
Out[50]:
['AvgPrice',
'平均票价',
'AvpPeoPle',
'场均人次',
'BoxOffice',
'单日票房(万)',
'BoxOffice_Up',
'环比变化',
'IRank',
'排名',
'MovieDay',
'上映天数',
'MovieName',
'影片名',
'SumBoxOffice',
'累计票房(万)',
'WomIndex',
'口碑指数']
In [51]: movies_group = list(zip(*[iter(movies_doc)]*2))
In [52]: movies_group
Out[52]:
[('AvgPrice', '平均票价'),
('AvpPeoPle', '场均人次'),
('BoxOffice', '单日票房(万)'),
('BoxOffice_Up', '环比变化'),
('IRank', '排名'),
('MovieDay', '上映天数'),
('MovieName', '影片名'),
('SumBoxOffice', '累计票房(万)'),
('WomIndex', '口碑指数')]
In [53]: movies_info.columns = list(zip(*movies_group))[1]
In [54]: movies_info
Out[54]:
平均票价 场均人次 单日票房(万) 环比变化 排名 上映天数 影片名 累计票房(万) 口碑指数
0 33 20 956 -17 1 20 厉害了,我的国 35739
1 37 1 328 -89 2 6 古墓丽影:源起之战 32524
2 33 1 133 -87 3 34 红海行动 351152
3 35 1 105 -86 4 13 黑豹 62409
4 31 1 103 -83 5 6 水形物语 8118
5 34 1 58 -83 6 34 唐人街探案2 336273
6 32 1 49 -89 7 20 小萝莉的猴神大叔 23700
7 35 1 15 -81 8 20 三块广告牌 5860
8 30 1 13 -78 9 20 比得兔 14453
9 29 1 12 -71 10 6 大坏狐狸的故事 1170