期末实验报告—黑色金属矿采选业-刘文博-821200216

In [1]:
import fitz
from bs4 import BeautifulSoup
import re
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import pdfplumber
import time
In [2]:
import pandas as pd
import os
import requests

def get_report(code:list,start,end):
    #此函数用于下载股票的年报数据,code必须是列表格式
    #start与end必须是yyyy-mm-dd的日期文本格式
    url1='http://www.cninfo.com.cn/new/data/szse_stock.json'
    s2=requests.get(url1)
    df2=eval(s2.text)
    df2=pd.DataFrame(df2['stockList'])
    url='http://www.cninfo.com.cn/new/hisAnnouncement/query'

    headers={'Accept': '*/*',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Content-Length': '201',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Cookie': 'JSESSIONID=6C58E377D0840FB0378B5D5ABAC71926; insert_cookie=37836164; _sp_ses.2141=*; routeId=.uc1; SID=638195d3-528f-4287-a832-c0aa7f38c3aa; _sp_id.2141=07956701-cde3-401e-a436-9365e13446b8.1619756100.1.1619756924.1619756100.264b867d-32e8-4399-8dd1-8dec91949ac6',
    'Host': 'www.cninfo.com.cn',
    'Origin': 'http://www.cninfo.com.cn',
    'Proxy-Connection': 'keep-alive',
    'Referer': 'http://www.cninfo.com.cn/new/commonUrl/pageOfSearch?url=disclosure/list/search&lastPage=index',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36',
    'X-Requested-With': 'XMLHttpRequest'}
    for i in code:
        org=list(df2[df2['code']==i]['orgId'])[0]
        data={'pageNum': '1',
        'pageSize': '30',
        'column': 'szse',
        'tabName': 'fulltext',
        'plate':'',
        'stock': '{},{}'.format(i,org),
        'searchkey':'',
        'secid':'',
        'category': 'category_ndbg_szsh',
        'trade':'',
        'seDate': '{}~{}'.format(start,end),
        'sortName':'',
        'sortType':'',
        'isHLtitle': 'true'}

        s1=requests.post(url,data=data,headers=headers)
        null=''
        false=''
        true=''
        df=eval(s1.text)
        df=pd.DataFrame(df['announcements'])
        name=list(list(df2[df2['code']==i]['zwjc'])[0]+df['announcementTitle'])
        name=[i.replace('*','') for i in name]
        lists=list(df['announcementId'])
        for i,j in zip(lists,name):
            down_url='http://www.cninfo.com.cn/new/announcement/download?bulletinId={}'.format(i)
            file=requests.get(down_url)
            f=open(j+'.pdf','wb+')
            f.write(file.content)
            f.close()
            print(j+'下载完成')


li=['000655','000762','000923','601969']
name=['金岭矿业','西藏矿业','河钢资源','海南矿业']
now_path=os.getcwd()
paths=[now_path+'\\'+i for i in name]
[os.mkdir(i) for i in paths]
li=[[i] for i in li]
for path,k in zip(paths,li):
    os.chdir(path)
    get_report(k,'2011-12-12','2021-12-31')
    files=os.listdir(path)
    remove=['摘要','已取消']
    for i in files:
        n=0
        for j in remove:
            if j in i and n==0:
                os.remove(path+'\\'+i)
                print(i+'   已删除')
                n+=1
金岭矿业2020年年度报告下载完成
金岭矿业2020年年度报告摘要下载完成
金岭矿业2019年年度报告下载完成
金岭矿业2019年年度报告摘要下载完成
金岭矿业2018年年度报告下载完成
金岭矿业2018年年度报告摘要下载完成
金岭矿业2017年年度报告下载完成
金岭矿业2017年年度报告摘要下载完成
金岭矿业2016年年度报告下载完成
金岭矿业2016年年度报告摘要下载完成
金岭矿业2015年年度报告下载完成
金岭矿业2015年年度报告摘要下载完成
金岭矿业2014年年度报告下载完成
金岭矿业2014年年度报告摘要下载完成
金岭矿业2013年年度报告下载完成
金岭矿业2013年年度报告摘要下载完成
金岭矿业2012年年度报告下载完成
金岭矿业2012年年度报告摘要下载完成
金岭矿业2011年年度报告下载完成
金岭矿业2011年年度报告摘要下载完成
金岭矿业2011年年度报告摘要.pdf   已删除
金岭矿业2012年年度报告摘要.pdf   已删除
金岭矿业2013年年度报告摘要.pdf   已删除
金岭矿业2014年年度报告摘要.pdf   已删除
金岭矿业2015年年度报告摘要.pdf   已删除
金岭矿业2016年年度报告摘要.pdf   已删除
金岭矿业2017年年度报告摘要.pdf   已删除
金岭矿业2018年年度报告摘要.pdf   已删除
金岭矿业2019年年度报告摘要.pdf   已删除
金岭矿业2020年年度报告摘要.pdf   已删除
西藏矿业2020年年度报告下载完成
西藏矿业2020年年度报告摘要下载完成
西藏矿业2019年年度报告下载完成
西藏矿业2019年年度报告摘要下载完成
西藏矿业2018年年度报告摘要下载完成
西藏矿业2018年年度报告下载完成
西藏矿业2017年年度报告(更新后)下载完成
西藏矿业2017年年度报告(已取消)下载完成
西藏矿业2017年年度报告摘要下载完成
西藏矿业2016年年度报告下载完成
西藏矿业2016年年度报告摘要下载完成
西藏矿业2015年年度报告下载完成
西藏矿业2015年年度报告摘要下载完成
西藏矿业2014年年度报告下载完成
西藏矿业2014年年度报告摘要下载完成
西藏矿业2013年年度报告下载完成
西藏矿业2013年年度报告摘要下载完成
西藏矿业2012年年度报告下载完成
西藏矿业2012年年度报告摘要下载完成
西藏矿业2011年年度报告下载完成
西藏矿业2011年年度报告摘要下载完成
西藏矿业2011年年度报告摘要.pdf   已删除
西藏矿业2012年年度报告摘要.pdf   已删除
西藏矿业2013年年度报告摘要.pdf   已删除
西藏矿业2014年年度报告摘要.pdf   已删除
西藏矿业2015年年度报告摘要.pdf   已删除
西藏矿业2016年年度报告摘要.pdf   已删除
西藏矿业2017年年度报告摘要.pdf   已删除
西藏矿业2017年年度报告(已取消).pdf   已删除
西藏矿业2018年年度报告摘要.pdf   已删除
西藏矿业2019年年度报告摘要.pdf   已删除
西藏矿业2020年年度报告摘要.pdf   已删除
河钢资源2020年年度报告下载完成
河钢资源2020年年度报告摘要下载完成
河钢资源2019年年度报告下载完成
河钢资源2019年年度报告摘要下载完成
河钢资源2018年年度报告下载完成
河钢资源2018年年度报告摘要下载完成
河钢资源2017年年度报告(更新后)下载完成
河钢资源2017年年度报告摘要(更新后)下载完成
河钢资源2017年年度报告(已取消)下载完成
河钢资源2017年年度报告摘要下载完成
河钢资源2016年年度报告下载完成
河钢资源2016年年度报告摘要下载完成
河钢资源2015年年度报告(更新后)下载完成
河钢资源2015年年度报告(已取消)下载完成
河钢资源2015年年度报告摘要下载完成
河钢资源2014年年度报告下载完成
河钢资源2014年年度报告摘要下载完成
河钢资源2013年年度报告下载完成
河钢资源2013年年度报告摘要下载完成
河钢资源2012年年度报告下载完成
河钢资源2012年年度报告摘要下载完成
河钢资源2011年年度报告下载完成
河钢资源2011年年度报告摘要下载完成
河钢资源2011年年度报告摘要.pdf   已删除
河钢资源2012年年度报告摘要.pdf   已删除
河钢资源2013年年度报告摘要.pdf   已删除
河钢资源2014年年度报告摘要.pdf   已删除
河钢资源2015年年度报告摘要.pdf   已删除
河钢资源2015年年度报告(已取消).pdf   已删除
河钢资源2016年年度报告摘要.pdf   已删除
河钢资源2017年年度报告摘要.pdf   已删除
河钢资源2017年年度报告摘要(更新后).pdf   已删除
河钢资源2017年年度报告(已取消).pdf   已删除
河钢资源2018年年度报告摘要.pdf   已删除
河钢资源2019年年度报告摘要.pdf   已删除
河钢资源2020年年度报告摘要.pdf   已删除
海南矿业海南矿业2020年年度报告下载完成
海南矿业海南矿业2020年年度报告摘要下载完成
海南矿业2017年年度报告(修订版)下载完成
海南矿业2019年年度报告(修订版)下载完成
海南矿业2019年年度报告摘要下载完成
海南矿业2019年年度报告下载完成
海南矿业2018年年度报告(修订版)下载完成
海南矿业2018年年度报告摘要下载完成
海南矿业2018年年度报告下载完成
海南矿业2017年年度报告(修订版)下载完成
海南矿业2017年年度报告摘要下载完成
海南矿业2017年年度报告下载完成
海南矿业2016年年度报告摘要下载完成
海南矿业2016年年度报告下载完成
海南矿业2015年年度报告摘要下载完成
海南矿业2015年年度报告下载完成
海南矿业2014年年度报告(修订版)下载完成
海南矿业2014年年度报告下载完成
海南矿业2014年年度报告摘要下载完成
海南矿业2014年年度报告摘要.pdf   已删除
海南矿业2015年年度报告摘要.pdf   已删除
海南矿业2016年年度报告摘要.pdf   已删除
海南矿业2017年年度报告摘要.pdf   已删除
海南矿业2018年年度报告摘要.pdf   已删除
海南矿业2019年年度报告摘要.pdf   已删除
海南矿业海南矿业2020年年度报告摘要.pdf   已删除
In [3]:
# 提取营业收入
def getText(pdf): # 获取文本
    text = ''
    doc = fitz.open(pdf)
    for page in doc:
        text += page.getText()
    doc.close()
    text = text.replace(" "," \n")
    text = text.replace("\n\n","\n")#由于后续subp匹配过程中,有的数字后面没有换行符,无法进行非贪婪的匹配,所以通过文本内部符号替换
    return(text)
def get_content(pdf):#定义函数获取营业收入所在年报内容的位置
    text = getText(pdf)
    p = re.compile('(?<=\\n)\D、\s*\D*?主要\D*?数据\D*?\s*(?=\\n)(.*?)经营活动产生的',re.DOTALL)#定位各个年报固定位置的内容
    content = p.search(text).group(0)
    return(content)
def parse_data_line(pdf): #定义函数单独提取营业收入所在行的内容
    content = get_content(pdf)
    subp = "([0-9,.%\- ]*?)\n"
    psub = "%s%s%s%s" % (subp,subp,subp,subp)
    p =re.compile("(?<=\\n)营业(\D*?\n)+%s" % psub) #定义营业收入所在行的内容
    lines = p.search(content)
    lines = lines[0]
    return(lines)
In [4]:
#提取每股净收益
def get_profit(pdf):
    text = getText(pdf)
    p = re.compile('(?<=\\n)\D、\s*\D*?主要\D*?指标\D*?\s*(?=\\n)(.*?)稀释每股',re.DOTALL)
    profit = p.search(text).group(0)
    return(profit)

def profit_data_line(pdf):
    profit = get_profit(pdf)
    subp = "([0-9,.%\- ]*?)\n"
    psub = "%s%s%s%s" % (subp,subp,subp,subp)
    p =re.compile("(?<=\\n)基本每股收益(\D*?\n)+%s" % psub)#定义每股收益所在行的内容
    lines_profit = p.search(profit)
    lines_profit = lines_profit[0]
    return(lines_profit)
path_1 = os.getcwd()+ '\pdf'
dir_list = [(path_1 + '\\' + x) for x in os.listdir(path_1)]
path_list = []
for x in dir_list:
    list_1 = [(path_1 + '\\' + x) for x in os.listdir(x)]
    path_list.append(list_1)
path_list
def read_from_pdf(file_path):
    with open(file_path, 'rb') as file:
        resource_manager = PDFResourceManager()
        return_str = StringIO()
        lap_params = LAParams()
        device = TextConverter(resource_manager, return_str, laparams=lap_params)
        process_pdf(resource_manager, device, file)
        device.close()
        content = return_str.getvalue()
        return_str.close()
        return re.sub('\s+', '', content)
data_list = []
for i in path_list:
    for x in i:
        list_2 = []
        data_1 = read_from_pdf(x)
        name_1 = re.findall(r'股票简称:(.*?)股票代码', data_1, re.S)[0]
        num_1 = re.findall(r'股票代码:(.*?)披', data_1, re.S)[0]
        add_1 = re.findall(r'公司办公地址:(.*?)号', data_1, re.S)
        url_1 = re.findall(r'公司互联网网址:(.*?)公司电子', data_1, re.S)[0]
        list_2.append(data_1)
        list_2.append(name_1)
        list_2.append(num_1)
        list_2.append(add_1)
        list_2.append(url_1)
        data_list.append(list_2)
df = pd.Dataframe(data_list)
df.to_csv("./data_list.csv")
In [ ]:

In [14]:
import os
os.chdir(r"C:\Users\ws\Anaconda3\金岭矿业")
filenames = os.listdir() #把代码所在文件夹的所有文件和文件名查找出来
pdf_list = [f for f in filenames if f.endswith('.pdf')]
df = pd.DataFrame(columns = ["name", "year", "pdf"])
df["name"] = [f[0:4] for f in pdf_list]
years = [f[4:8] for f in pdf_list]
df['year'] = years
df['pdf'] = pdf_list
df = df.sort_values(by='year', ascending=False)
In [15]:
df["pdf"]
Out[15]:
9    金岭矿业2020年年度报告.pdf
8    金岭矿业2019年年度报告.pdf
7    金岭矿业2018年年度报告.pdf
6    金岭矿业2017年年度报告.pdf
5    金岭矿业2016年年度报告.pdf
4    金岭矿业2015年年度报告.pdf
3    金岭矿业2014年年度报告.pdf
2    金岭矿业2013年年度报告.pdf
1    金岭矿业2012年年度报告.pdf
0    金岭矿业2011年年度报告.pdf
Name: pdf, dtype: object
In [16]:
sale = []
profit =[]

for pdf in df['pdf']:
    i=0
    #year = pdf[4:9]
    doc = fitz.open(pdf)  #打开pdf
    text = [page.getText() for page in doc]
    text = ''.join(text)
    p_re = re.compile('(?<=\n)营业总?收入(?\w?)?\s?\n?([\d+,.]*)\s\n?')
    revenue = p_re.search(text).group(1)
    revenue = revenue.replace(',','') #把revenue里的逗号去掉
    sale.append(revenue)

    profit_gain = profit_data_line(pdf)
    profit_gain = profit_gain.split("\n")
    profit_gain = profit_gain[1]
    profit.append(profit_gain)

Deprecation: 'getText' removed from class 'Page' after v1.19 - use 'get_text'.
In [17]:
data = pd.DataFrame()
data["sale"]=sale
data["profit"]=profit
data.index=df["year"]
In [18]:
data = data[::-1]
data
Out[18]:
sale profit
year
2011 1784013716.51 0.84
2012 1317517522.18 0.36
2013 1637227534.38 0.44
2014 1539792556.14 0.35
2015 786416931.70 0.0175
2016 625925212.20 -0.945
2017 1043825925.17 -0.531
2018 1041278828.75 0.169
2019 1335920163.46 0.302
2020 1434847048.97 0.387
In [19]:
data.to_csv(r"C:\Users\ws\Anaconda3\金岭矿业.csv")
In [20]:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
In [21]:
plt.figure()
plt.plot(data.index,data["sale"].astype(float),c="c")
plt.title("金岭矿业营业收入")
plt.grid()
plt.show()
In [22]:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.figure()
plt.plot(data.index,data["profit"].astype(float),c="c")
plt.title("金岭矿业每股收益")
plt.grid()
plt.show()
In [23]:
import os
os.chdir(r"C:\Users\ws\Anaconda3\河钢资源")
filenames = os.listdir() #把代码所在文件夹的所有文件和文件名查找出来
pdf_list = [f for f in filenames if f.endswith('.pdf')]
df = pd.DataFrame(columns = ["name", "year", "pdf"])
df["name"] = [f[0:4] for f in pdf_list]
years = [f[4:8] for f in pdf_list]
df['year'] = years
df['pdf'] = pdf_list
df = df.sort_values(by='year', ascending=False)
In [24]:
df["pdf"]
Out[24]:
9         河钢资源2020年年度报告.pdf
8         河钢资源2019年年度报告.pdf
7         河钢资源2018年年度报告.pdf
6    河钢资源2017年年度报告(更新后).pdf
5         河钢资源2016年年度报告.pdf
4    河钢资源2015年年度报告(更新后).pdf
3         河钢资源2014年年度报告.pdf
2         河钢资源2013年年度报告.pdf
1         河钢资源2012年年度报告.pdf
0         河钢资源2011年年度报告.pdf
Name: pdf, dtype: object
In [25]:
sale = []
profit =[]

for pdf in df['pdf']:
    i=0
    #year = pdf[4:9]
    doc = fitz.open(pdf)  #打开pdf
    text = [page.getText() for page in doc]
    text = ''.join(text)
    p_re = re.compile('(?<=\n)营业总?收入(?\w?)?\s?\n?([\d+,.]*)\s\n?')
    revenue = p_re.search(text).group(1)
    revenue = revenue.replace(',','') #把revenue里的逗号去掉
    sale.append(revenue)

    profit_gain = profit_data_line(pdf)
    profit_gain = profit_gain.split("\n")
    profit_gain = profit_gain[1]
    profit.append(profit_gain)
Deprecation: 'getText' removed from class 'Page' after v1.19 - use 'get_text'.
In [26]:
data = pd.DataFrame()
data["sale"]=sale
data["profit"]=profit
data.index=df["year"]
In [27]:
data = data[::-1]
data
Out[27]:
sale profit
year
2011 573964065.80 0.0521
2012 425989925.34 0.0273
2013 372664901.34 0.0207
2014 243601279.75 -0.364
2015 254851159.09 0.004
2016 260903845.02 0.011
2017 5401184628. 0.4668
2018 4971976123. 0.2055
2019 5799939573.98 0.8099
2020 5935194422. 1.4878
In [28]:
data.to_csv(r"C:\Users\ws\Anaconda3\河钢资源.csv")
In [29]:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.figure()
plt.plot(data.index,data["sale"].astype(float),c="c")
plt.title("河钢资源营业收入")
plt.grid()
plt.show()
In [30]:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.figure()
plt.plot(data.index,data["profit"].astype(float),c="c")
plt.title("河钢资源每股收益")
plt.grid()
plt.show()
In [31]:
import os
os.chdir(r"C:\Users\ws\Anaconda3\西藏矿业")
filenames = os.listdir() #把代码所在文件夹的所有文件和文件名查找出来
pdf_list = [f for f in filenames if f.endswith('.pdf')]
df = pd.DataFrame(columns = ["name", "year", "pdf"])
df["name"] = [f[0:4] for f in pdf_list]
years = [f[4:8] for f in pdf_list]
df['year'] = years
df['pdf'] = pdf_list
df = df.sort_values(by='year', ascending=False)
df["pdf"]
Out[31]:
8    西藏矿业2020年年度报告.pdf
7    西藏矿业2019年年度报告.pdf
6    西藏矿业2018年年度报告.pdf
5    西藏矿业2017年年度报告.pdf
4    西藏矿业2016年年度报告.pdf
3    西藏矿业2015年年度报告.pdf
2    西藏矿业2014年年度报告.pdf
1    西藏矿业2013年年度报告.pdf
0    西藏矿业2012年年度报告.pdf
Name: pdf, dtype: object
In [32]:
sale = []
profit =[]

for pdf in df['pdf']:
    i=0
    #year = pdf[4:9]
    doc = fitz.open(pdf)  #打开pdf
    text = [page.getText() for page in doc]
    text = ''.join(text)
    p_re = re.compile('(?<=\n)营业总?收入(?\w?)?\s?\n?([\d+,.]*)\s\n?')
    revenue = p_re.search(text).group(1)
    revenue = revenue.replace(',','') #把revenue里的逗号去掉
    sale.append(revenue)

    profit_gain = profit_data_line(pdf)
    profit_gain = profit_gain.split("\n")
    profit_gain = profit_gain[1]
    profit.append(profit_gain)
Deprecation: 'getText' removed from class 'Page' after v1.19 - use 'get_text'.
In [33]:
data = pd.DataFrame()
data["sale"]=sale
data["profit"]=profit
data.index=df["year"]
data = data[::-1]
data
Out[33]:
sale profit
year
2012 155512807.44 0.45
2013 174263656.50 0.35
2014 190206399.58 0.34
2015 198786732.91 0.270
2016 137628739.26 0.18
2017 174898144.88 0.40
2018 168492923.19 0.20
2019 128552232.82 0.02
2020 148031923.45 0.04
In [34]:
data.to_csv(r"C:\Users\ws\Anaconda3\西藏矿业.csv")
In [35]:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.figure()
plt.plot(data.index,data["sale"].astype(float),c="c")
plt.title("西藏矿业营业收入")
plt.grid()
plt.show()
In [36]:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.figure()
plt.plot(data.index,data["profit"].astype(float),c="c")
plt.title("西藏矿业每股收益")
plt.grid()
plt.show()
In [5]:
import os
os.chdir(r"C:\Users\ws\Anaconda3\海南矿业")
filenames = os.listdir() #把代码所在文件夹的所有文件和文件名查找出来
pdf_list = [f for f in filenames if f.endswith('.pdf')]
df = pd.DataFrame(columns = ["name", "year", "pdf"])
df["name"] = [f[0:4] for f in pdf_list]
years = [f[4:8] for f in pdf_list]
df['year'] = years
df['pdf'] = pdf_list
df = df.sort_values(by='year', ascending=False)
df["pdf"]
Out[5]:
7     海南矿业海南矿业2020年年度报告.pdf
6    海南矿业2019年年度报告(修订版).pdf
4         海南矿业2018年年度报告.pdf
5    海南矿业2018年年度报告(修订版).pdf
3    海南矿业2017年年度报告(修订版).pdf
2         海南矿业2016年年度报告.pdf
1         海南矿业2015年年度报告.pdf
0    海南矿业2014年年度报告(修订版).pdf
Name: pdf, dtype: object
In [6]:
sale = []
profit =[]
for pdf in df['pdf']:
    i=0
    #year = pdf[4:9]
    doc = fitz.open(pdf)  #打开pdf
    text = [page.getText() for page in doc]
    text = ''.join(text)
    p_re = re.compile('(?<=\n)营业总?收入(?\w?)?\s?\n?([\d+,.]*)\s\n?')
    revenue = p_re.search(text).group(1)
    revenue = revenue.replace(',','') #把revenue里的逗号去掉
    sale.append(revenue)

    profit_gain = profit_data_line(pdf)
    profit_gain = profit_gain.split("\n")
    profit_gain = profit_gain[1]
    profit.append(profit_gain)
data = pd.DataFrame()
data["sale"]=sale
data["profit"]=profit
data.index=df["year"]
data = data[::-1]
data
Deprecation: 'getText' removed from class 'Page' after v1.19 - use 'get_text'.
Out[6]:
sale profit
year
2014 1768011154.80 0.25
2015 1050584568.37 0.01
2016 907665417.95 -0.15
2017 2756164500.99 0.02
2018 1386602813.88 -0.39
2018 1386602813.88 -0.39
2019 3718283.31 0.07
海南矿业 2763664.40 0.07
In [ ]:

In [40]:
data.to_csv(r"C:\Users\ws\Anaconda3\海南矿业.csv")
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.figure()
plt.plot(data.index,data["sale"].astype(float),c="c")
plt.title("海南矿业营业收入")
plt.grid()
plt.show()
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.figure()
plt.plot(data.index,data["profit"].astype(float),c="c")
plt.title("海南矿业每股收益")
plt.grid()
plt.show()
< img src="data_list.png" alt="结果">

行业分析

黑色金属主要指铁、锰、铬及其合金,如钢、生铁、铁合金、铸铁等。黑色金属材料乃工业上对铁、铬和锰的统称。亦包括这三种金属的合金,尤其是 合金黑色金属钢及钢铁。从事黑色金属矿产采选的企业就称为"黑色金属矿采选业"。

营业收入图中可以看出,整个行业的收入在2016年前后波动特别大,金岭矿业和西藏矿业的收入直线下降,而另外两家公司的收入情况却与与它们完全相反。原因在于2016年海南河南两省的政府在年前发布鼓励基础建设的倡议,因此两省用钢用锰量大增,而其他两家公司却因为环保禁令和去产能的指标而在业绩上大大折扣。同时从每股收益表中也可以看出,营业收入直接影响了公司的每股收益,每股收益曲线与营业收益曲线趋势相同。但是在2016年之后,各个公司的收入变化又趋向平稳,说明之前的外生冲击渐渐无力,市场又开始自我恢复平稳。 总的来说,黑色金属产业是我国当前基础建设发展不可获取的又难以替代的,因此有望长期稳定发展。