pandas入门01——DataFrame数据处理及插入mysql数据库
前言
最近股市很火,本人就想着搞个量化分析的程序去炒炒股,说不定就走上人生巅峰了呢。
网上股市的数据接口大部分都是python的,返回的数据结构是DataFrame,本篇就记录一下本人学习DataFrame进行数据处理及插入数据库的过程。
环境准备
- python环境,推荐anaconda,网上安装教程很多
- mysql数据库,docker安装mysql数据库教程 传送门
- 安装tushare (提供获取股票数据接口)
- 安装pymysql
tushare和pymysql可以使用anaconda界面安装,也可以命令行安装 conda install xxx或者 pip install xxx
windows环境下安装好python后,在cmd命令行界面输入python有可能直接跳到应用商店,此时需要把环境变量path上移,移到应用商店环境变量上面就好了
DataFrame数据准备
import tushare as ts
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
#加上上面2行,保证控制台打印完整数据
pro = ts.pro_api()
df = pro.query('trade_cal', start_date='20200101', end_date='20201231')
print(df)
获取股票交易日数据如下:
exchange cal_date is_open
0 SSE 20200101 0
1 SSE 20200102 1
2 SSE 20200103 1
3 SSE 20200104 0
4 SSE 20200105 0
...
DataFrame数据处理
修改表头
由于DataFrame的数据要存到数据库里,默认情况下数据库的列名就是DataFrame的列名
#方法一
#直接修改,此方法有个缺点,必须写明每一列,不然会报错
df.columns=['exchange','trade_date','isopen']
#方法二
#指定修改,推荐
df.rename(columns={'cal_date':'trade_date','is_open':'is_open'},inplace=True)
修改数据
由于返回的日期格式是yyyyMMdd,想修改为yyyy-MM-dd格式
df['trade_date']=df['trade_date'].apply(lambda x:x[0:4]+"-"+x[4:6]+"-"+x[6:8])
数据入库
import tushare as ts
import pandas as pd
from sqlalchemy import create_engine
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pro = ts.pro_api()
df = pro.query('trade_cal', start_date='20200101', end_date='20201231')
print(df)
df.rename(columns={
'exchange':'exchange','cal_date':'trade_date','is_open':'is_open'},inplace=True