爬虫+分析数据绘图

 

  • 实验目的

1. 爬虫+分析数据绘图

  • 实验要求

1. 爬虫+分析数据绘图

  • 实验过程

 

  • 寻找存放数据的文件
  1. 打开谷歌浏览器,输入网址:

http://finance.sina.com.cn/stock/sl/

按住f12键,在浏览器的后台点击Network观察下方的数据变化。

爬虫+分析数据绘图

点击newSinaHy.php发现表格数据全放在这个文件夹下,点击右键选择copy,再选择copy link address保存这个文件的url,其url为:

http://vip.stock.finance.sina.com.cn/q/view/newSinaHy.php

 

  1. 在Jupyter上新建一个项目,用来分析爬取下来的数据。

首先通过request库,定义一个对象,把先前获取得到的url传递给get方法,并且显示网页的内容。

import requests

req=requests.get("http://vip.stock.finance.sina.com.cn/q/view/newSinaHy.php")

req.encoding='gbk'

req.text

爬虫+分析数据绘图

引用re库,只保留{}里面的内容:

import re

table_text = re.findall('\{.*\}',req.text)[0]

table_text

爬虫+分析数据绘图

引用json库,使用Json来加载数据,生成字典结构数据。

import json

import pandas as pd

bk = json.loads(table_text)

bk

爬虫+分析数据绘图

再把字典数据生成DataFrame:

df = pd.DataFrame.from_dict(bk,orient='index',columns=['info'])

爬虫+分析数据绘图

 

给dataFrame添加表头:

values = df['info'].str.split(",",expand=True)

values.columns=['板块编码','板块','公司家数','平均价格','涨跌额','涨跌幅','总成交量','总成交金额','领涨股代码','涨跌幅','当前价','涨跌额','领涨股名称']

把数据保存在csv文件中

values.to_csv("C:\\Users\\栗子\\Desktop\\数据预处理\\mystock.csv",encoding='gbk')

定义一个load_data变量用来加载csv新生成的数据:

load_data=pd.read_csv("C:\\Users\\栗子\\Desktop\\数据预处理\\mystock.csv",low_memory=False,encoding='gbk')

load_data.head()

爬虫+分析数据绘图

定义一个列表来保存指定的特征数据,以便进行数据分析:

load_data_clean=load_data[['平均价格','涨跌额','涨跌幅','总成交量',                           '总成交金额','涨跌额.1','当前价','涨跌幅.1']]

load_data_clean.head()

爬虫+分析数据绘图

引用matplotlib.pyplot库,实现画图分析:

import matplotlib.pyplot as plt

import seaborn as sns

%matplotlib inline

plt.rc('font',family='SimHei',size=13)

所有特征数据的折线图走势:

load_data_clean.plot(figsize=(15,6))

爬虫+分析数据绘图

去掉异常数据,只取25%--75%的数据,按照平均价格来取

sns.boxplot(x=load_data_clean.平均价格)

爬虫+分析数据绘图

涨跌幅与涨跌额的相关性体现:散点图

plt.figure(figsize=(15,6))

plt.scatter(load_data_clean.涨跌幅,load_data_clean.涨跌 额,c='b',alpha=0.8)

plt.xlabel('涨跌幅')

plt.ylabel('涨跌额')

爬虫+分析数据绘图

平均价格与涨跌的散点图:

plt.figure(figsize=(15,6))

plt.scatter(load_data_clean.平均价格,load_data_clean.涨跌额,c='b',alpha=0.8)

plt.xlabel('平均价格')

plt.ylabel('涨跌额')

爬虫+分析数据绘图

总成交量与涨跌额的相关性:

plt.figure(figsize=(15,6))

plt.scatter(load_data_clean.总成交量,load_data_clean.涨跌额,c='b',alpha=0.8)

plt.xlabel('总成交量')

plt.ylabel('涨跌额')

爬虫+分析数据绘图

总成交金额予涨跌额:

plt.figure(figsize=(15,6))

plt.scatter(load_data_clean.总成交金额,load_data_clean.涨跌额,c='b',alpha=0.8)

plt.xlabel('总成交金额')

plt.ylabel('涨跌额')

爬虫+分析数据绘图

由以上几个图可以看出,涨跌额与涨跌额,平均价格,总成交量,总成交金额相关性比较强。

画圆饼图分析平均价格主要落在区间:

load_data_clean.平均价格.plot(kind='pie',colormap='Dark2')

爬虫+分析数据绘图

柱形图:

load_data_clean.平均价格.plot(kind='bar',colormap='Dark2')

爬虫+分析数据绘图

由圆饼图及柱形图均可看出平均价格落在27及37的股票比较多,其中27元的最多,其次37元,最低的是14元。

 

  • 总结

通过这次实验,我体会到了用python画图效率比excel高很多。它可以根据个人的需求画出大量数据相关的图,并且有些重复的操作可以写在一个函数中,不必机械地重复一个动作。并且用python画出的图足够美观,还可以随时根据需求改变变量。特别是通过使用散点图,可以清晰明了地看到二者的相关性,提高建模的效率。