在上周大作业的逼迫之下被迫去学习Python,于是决定开个新坑来学一波(之前好像开过但没学)
大概这周会搞一个如题目所示东西
数据来源于天池
今天只把简单的数据进行了一下处理,具体内容在代码里写的很清楚了
# -*- coding: utf-8 -*-
"""
Created on Sun Sep 26 15:42:22 2021
Project
Predicting stock changes through machine learning
@author: zhn2021
"""
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.pyplot import MultipleLocator
#从pyplot导入MultipleLocator类,这个类用于设置刻度间隔
from datetime import datetime
#主题设置
sns.set_style('whitegrid')
plt.style.use("fivethirtyeight")
def cout(sample):
plt.figure()
plt.plot(sample.date,sample.open,c='b',label='open')
plt.plot(sample.date,sample.close,c='#C0C0C0',label='open')
#这句不加不显示图例
plt.legend(loc="upper right")
plt.show()
def printf(sample):
plt.figure()
plt.plot(sample.date,sample.open,c='b',linewidth=2, markersize=12,label='open')
plt.plot(sample.date,sample.close,c='#C0C0C0',linewidth=2, markersize=12, label='close')
plt.show()
x_major_locator=MultipleLocator(6)
#把x轴的刻度间隔设置为1,并存在变量里
y_major_locator=MultipleLocator(1)
#把y轴的刻度间隔设置为10,并存在变量里
ax=plt.gca()
#ax为两条坐标轴的实例
ax.xaxis.set_major_locator(x_major_locator)
#把x轴的主刻度设置为6的倍数
ax.yaxis.set_major_locator(y_major_locator)
#把y轴的主刻度设置为1的倍数
plt.ylim(43,)
plt.legend(loc="upper right")
#plt.legend(handles=[ln2,ln1],lables=['open','close'])
plt.show()
def main():
#读入数据并且初步看看这数据里都有啥
file=pd.read_csv("all_stocks_5yr.csv")
#查看总体都有啥以及前十行
file.info()
print(file.head(10))
#查看几家公司
print(file.Name.nunique())
#求得开市日期
open_datas=np.unique(file.date)
print(open_datas.size)
#获得时间
#dates = file.date.apply(lambda x : pd.to_datetime(x, format='%Y-%m-%d', errors='ignore'))
#得出现次数最多的几家公司
print(file.Name.value_counts().head(5))
#我们现在选择其中一家公司作为样本
samplee=file[file.Name=='ALL']
print(samplee.head(5))
sample=samplee.head(50)
#如果直接搞得话由于数据量大,我电脑直接跑死机了(),这里取前50天
#先看看直接画是啥效果
cout(sample)
#X轴太密了,看起来非常谔谔
#我们设置一下间隔,操作如下
printf(sample)
#这样我们的图就看起来体面了很多
main()