选拔赛题目

1)编写python程序,利用tushare包,收集获取沪深上市公司基本情况数据,并储存为csv文件,文件名称为:沪深上市公司基本情况数据.csv。

(2)通过python程序,从上述文件中筛选出2017年度徐工机械以及工程机械制造行业可比上市公司的数据,储存为csv文件,文件名称为:徐工机械可比上市公司数据.csv。(可比参数:总资产为徐工机械2017年总资产的0.8—1.2倍)

(3)编写python程序,根据第(2)步保存的文件,绘制各企业固定资产柱状图。

提示:徐工机械的股票代码为000425,第(1)步所需数据通过get_stock_basics函数获得(在tushare官网的 “基本面数据”——“股票列表”)。

要求:所有文件的存储路径为"D:\BigData\"。

 

 

import matplotlib.pyplot as plt                  #绘图
import seaborn as sns                       #基于matplotlib的数据可视化库
import tushare as ts                          #财经数据接口
import pandas as pd
from datetime import datetime
import csv

#(1)收集获取沪深上市公司基本情况数据,并储存为csv文件
stock1 = ts.get_stock_basics()
stock1.to_csv('d:/bigdata/沪深上市公司基本情况数据.csv',encoding='utf_8_sig')


#(2)上述文件中筛选出2017年度徐工机械以及工程机械制造行业可比上市公司的数据,储存为csv文件,可比参数:总资产为徐工机械2017年总资产的0.8—1.2倍
filename1='d:/bigdata/沪深上市公司基本情况数据.csv'
with open(filename1, encoding='utf_8_sig') as  f1:
    r = csv.DictReader(f1)
    for row in r:
        if row['code'] == '000425':       #根据code,找到徐工机械所在的一行数据,生成字典xugong
            xugong=row

break

maxfixed=float(xugong['fixedAssets'])*1.2   #设置固定资产上限
minfixed=float(xugong['fixedAssets'])*0.8   #设置固定资产下限

#定义3个空列表,分别用来存放可比公司的代码、名称和固定资产
code = []
name = []
fixedAssets = []

with open(filename1, encoding='utf_8_sig') as  f1:
    r = csv.DictReader(f1)
    for row in r:
        #根据所属行业和固定资产值,找出可比公司名单
        if row['industry'] == '工程机械' and float(row['fixedAssets']) >= minfixed and float(row['fixedAssets']) <= maxfixed:
            code.append(row['code'])
            name.append(row['name'])
            fixedAssets.append(float(row['fixedAssets']))

kebi={"code" : code,"name" : name,"fixedAssets" : fixedAssets}  #将列表kebi,b转换成字典
data2=pd.DataFrame(kebi)  #字典转换为dataframe
data2.to_csv('d:/bigdata/徐工机械可比上市公司数据.csv',encoding='utf_8_sig')



#(3)根据第(2)步保存的文件,绘制各企业固定资产柱状图
filename2=open('d:/bigdata/徐工机械可比上市公司数据.csv',encoding='utf_8_sig')
stock3=pd.read_csv(filename2)

sns.set_style("whitegrid")
plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
sns.set(font='SimHei')  # 解决Seaborn中文显示问题

sns.barplot(x=stock3['name'],y=stock3['fixedAssets'])
plt.title('各企业固定资产柱状图')
plt.xlabel('企业名称')
plt.ylabel('固定资产')
plt.savefig('d:/bigdata/各企业固定资产柱状图.png')

 

 

 

 

第4题——利润表,读写csv,遍历,筛选单元格,饼状图,UTF8编码

(1)编写python程序,利用tushare包抓取烽火通信利润表,存储为csv文件,文件名为:烽火通信利润表.csv。

(2)编写python程序,根据上述文件,生成2017年第一季度营业总成本中,各部分所占比例的饼状图,大小为(10,7),存储为png格式,文件名为:2017年第一季度营业成本饼状图.png。

提示:利用tushare包抓取烽火通信利润表的接口为:ts.get_profit_statement('600498')。 

要求:所有文件的存储路径为"D:\BigData\"。

 

 

import matplotlib.pyplot as plt                  #绘图
import seaborn as sns                       #基于matplotlib的数据可视化库
import tushare as ts                          #财经数据接口
import pandas as pd
import csv
from datetime import datetime

#抓取烽火通信利润表,存储为csv文件,文件名为:烽火通信利润表.csv
lirun=ts.get_profit_statement('600498')
lirun.to_csv('d:/bigdata/烽火通信利润表.csv',encoding='utf_8_sig')

#根据上述文件,生成2017年第一季度营业总成本中,各部分所占比例的饼状图,大小为(10,7),存储为png格式,文件名为:2017年第一季度营业成本饼状图.png。
filename='d:/bigdata/烽火通信利润表.csv'
with open(filename,encoding='utf_8_sig') as  f:
    r=csv.DictReader(f)
    d={}     #空字典,用来保存各方面成本
    for row in r:
        if row['报表日期'] == '二、营业总成本':
            totalcb=float(row['20170331'])
        else:
            if row['报表日期'] == '营业成本':
                d['营业成本'] = float(row['20170331'])
            else:
                if row['报表日期'] == '营业税金及附加':
                    d['营业税金及附加'] = float(row['20170331'])
                else:
                    if row['报表日期'] == '销售费用':
                        d['销售费用'] = float(row['20170331'])
                    else:
                        if row['报表日期'] == '管理费用':
                            d['管理费用'] = float(row['20170331'])
                        else:
                            if row['报表日期'] == '财务费用':
                                d['财务费用'] = float(row['20170331'])
                            else:
                                if row['报表日期'] == '资产减值损失':
                                    d['资产减值损失'] = float(row['20170331'])
                                    break

#print(d)
sns.set_style("whitegrid")
plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
sns.set(font='SimHei')  # 解决Seaborn中文显示问题
plt.figure(figsize=(10,7))

plt.pie(x=list(d.values()), labels=list(d.keys()))   #x为数据,labels为标签
plt.savefig('d:/bigdata/2017年第一季度营业成本饼状图.png')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值