读取股票数据存储到本地MySQL数据库(二)

通过凤凰api获取到json数据。

#encoding = utf-8
import requests
import json
import pandas as pd

class GetStockPrice(object):

    def get_daily_price(self, stock):
        DAY_PRICE_URL = 'http://api.finance.ifeng.com/akdaily/?code=%s&type=last'
        url = DAY_PRICE_URL % stock
        columns = ['date', 'open', 'high', 'close', 'low', 'volume', 'chg', 'chg_percent', 'ma5', 'ma10', 'ma20', 'vma5',\
                   'vma10','vma20', 'turnover']
        response = requests.get(url)
        response.raise_for_status()
        response.encoding = 'utf-8'
        text = response.text
        js = json.loads(text)
        if js['record']:
            df = pd.DataFrame(js['record'], columns=columns)
        else:
            print('该条记录无数据!')
        df = df.applymap(lambda x: x.replace(',', ''))
        for col in columns[1:]:
            df[col] = df[col].astype(float32)
        df['stock_code'] = stock

        return df
读取股票数据存储到本地MySQL数据库(二)_第1张图片
df.apply(func)是对每行数据按func处理,func一般设置为lambda函数。

df.applymap(func)对df的每个元素进行操作;df.map(func)是对df的Series的操作。

 type(df.iloc[0]['open'])返回值是str,故还需要将每个值变为float类型,由于数值不是太大,可以使用astype函数,为了节省空间,可以设置为float32类型。

pd.DataFrame()初始化可以接收嵌套list。

你可能感兴趣的:(读取股票数据存储到本地MySQL数据库(二))