python 作图

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

导入包:
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import tushare as ts
import pandas as pd

最新折线图
df1 = ts.get_k_data(‘0000’,‘2017-01-01’,‘2017-12-31’,autype=‘none’,ktype=‘m’)
df1.to_csv(‘d:/bigdata/0000csv’,encoding=‘utf_8_sig’)
filename=open(‘d:/bigdata/0000.csv’,encoding=‘utf_8_sig’)
df2=pd.read_csv(‘d:/bigdata/0000.csv’,encoding=‘utf_8_sig’)
df=df2[[‘date’,‘close’]]
df.to_csv(‘d:/bigdata/0000(已清洗).csv’,encoding=‘utf_8_sig’,index=False)
filename1 = open(‘d:/bigdata/0000.csv’,encoding=‘utf_8_sig’)
df3 = pd.read_csv(filename ,encoding=‘utf_8_sig’)
plt.plot(df3.date,df3[[‘close’,‘high’,‘open’]])
plt.legend([‘close’,‘high’,‘open’])
plt.xticks(rotation = 30)
#plt.savefig(‘d:/bigdata/0000折线图.png’,encoding = True)
plt.show()

import tushare as ts
import pandas as pd
import matplotlib.pyplot as plt
df1 = ts.get_hist_data(‘600498’,‘2017-01-01’,‘2017-12-31’,ktype=‘m’)
df2 = ts.get_hist_data(‘sh’,‘2017-01-01’,‘2017-12-31’,ktype=‘m’)
print(df2)
df1.sort_values(by=‘date’).to_csv(‘d:/bigdata/烽火通信2017年1-12月的指数涨跌幅数据.csv’,encoding=‘utf_8_sig’)
df2.sort_values(by=‘date’).to_csv(‘d:/bigdata/上证指数2017年1-12月的指数涨跌幅数据.csv’,encoding=‘utf_8_sig’)
filename1=open(‘d:/bigdata/烽火通信2017年1-12月的指数涨跌幅数据.csv’,encoding=‘utf_8_sig’)
filename2=open(‘d:/bigdata/烽火通信2017年1-12月的指数涨跌幅数据.csv’,encoding=‘utf_8_sig’)
df3 = pd.read_csv(filename1,encoding=‘utf_8_sig’)
df4 = pd.read_csv(filename2,encoding=‘utf_8_sig’)
plt.figure(figsize=(10,7))
plt.title(‘开盘价收盘价最高价折线图’, fontproperties=‘SimHei’)
plt.plot(df3.date,df3[[‘close’,‘high’,‘open’]])
plt.xticks(rotation = 30)
plt.legend([‘close’,‘high’,‘open’])
plt.savefig(‘d:/bigdata/开盘价收盘价最高价折线图.png’,encoding = True)
plt.figure(figsize=(10,7))
plt.title(‘5日均价10日均价20日均价折线图’, fontproperties=‘SimHei’)
plt.plot(df3.date,df3[[‘v_ma5’,‘v_ma10’,‘v_ma20’]])
plt.xticks(rotation = 30)
plt.legend([‘v_ma5’,‘v_ma10’,‘v_ma20’])
plt.savefig(‘d:/bigdata/5日均价10日均价20日均价折线图.png’,encoding = True)

季度所得税
import tushare as ts
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
df1=ts.get_profit_statement(‘600498’)
df1.to_csv(‘d:/bigdata/烽火通信2017年末利润表.csv’,encoding=‘utf_8_sig’)
filename=open(‘d:/bigdata/烽火通信2017年末利润表.csv’,encoding=‘utf_8_sig’)
df2=pd.read_csv(filename,encoding=‘utf_8_sig’)
df3 = df2[[‘报表日期’,‘20171231’,‘20170930’,‘20170630’,‘20170331’]][(df2.报表日期==‘减:所得税费用’)]
df4 = df3.T
df4.to_csv(‘1.csv’,encoding=‘utf_8_sig’,index=False)
filename1=open(‘1.csv’,encoding=‘utf_8_sig’)
df5 = pd.read_csv(filename1,encoding=‘utf_8_sig’,skiprows=1)
sns.set(font=‘SimHei’)
x=[‘第一季度’,‘第二季度’,‘第三季度’,‘第四季度’]
y=df5[‘减:所得税费用’]
sns.barplot(x,y)
plt.savefig(‘d:/bigdata/季度所得税柱状图.png’,encoding=‘utf_8_sig’)
plt.show()

from datatime import detatime

查找股价基本语句:
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import tushare as ts
import pandas as pd
df1 = ts.get_k_data(‘600498’, start=‘2007-01-01’,end=‘2007-12-31’,ktype=‘M’)
df2 = ts.get_k_data(‘sh’, start=‘2007-01-01’,end=‘2007-12-31’,ktype=‘M’)
print(df1)
#df1.to_csv(‘d:/bigdata/0000000.csv’,encoding=’ utf_8_sig’)
#filename1=open(‘d:/bigdata/0000000.csv’,encoding=’ utf_8_sig’)
#df3 = pd.read_csv(filename1, encoding=’ utf_8_sig’)

常用函数
df1 = ts.get_k_data(‘600498’,start= ‘2017-01-01’, end=‘2017-12-31’, ktype=‘m’)
df1 = ts.get_stock_basics()
df1 = ts.get_hist_data(‘600498’,start=‘2017-01-01’,end=‘2017-12-31’)
df1=ts.get_profit_statement(‘600498’)

x = df[‘date’]
y = df[‘open’]
画图:
基本设置:
plt.rcParams[‘font.sans-serif’] = [‘SimHei’] # 中文字体设置-黑体
plt.rcParams[‘axes.unicode_minus’] = False # 解决保存图像是负号’-‘显示为方块的问题
sns.set(font=‘SimHei’) # 解决Seaborn中文显示问题作图
sns.set_style(‘white’)
plt.figure(figsize=(10,7))
plt.show()
plt.savefig(‘d:/bigdata/111111.png’, encoding=’ utf_8_sig’)

plt.title(‘股票数据’, fontproperties=‘SimHei’)
plt.xlabel(‘日期’, fontproperties=‘SimHei’)
plt.ylabel(‘开盘价’, fontproperties=‘SimHei’)
plt.legend(‘center’)

散点图

plt.scatter(df[‘date’], df[‘open’], label=‘scatter’, c=‘g’, alpha=0.5)

折线图

#法一
plt.plot(x, y, ls=’-’, lw=2, c=‘g’, label=‘sin(x)’)
#法二
df1[‘v_ma5’].plot(figsize=(10, 7))
df1[‘v_ma10’].plot(figsize=(10, 7))
df1[‘v_ma20’].plot(figsize=(10, 7))
#法三
df1.plot(figsize=(10,7),legend=True)

柱状图

plt.bar(x, y, align=‘center’, color=‘c’, tick_label=x, hatch=’/’)
plt.show()
plt.savefig(‘d:/bigdata/111111.png’, encoding=’ utf_8_sig’)

barplot 柱状图

sns.barplot(x, y)
plt.show()
#法三
df1.plot(kind=’bar’)

直方图

plt.hist(y, bins=range(0, 11), color=‘r’, histtype=‘bar’, rwidth=0.95, alpha=0.6)

饼图

plt.pie(ration, labels=labels, autopct=’%3.1f%%’, startangle=90)
plt.title(‘不同公司占比’, fontproperties=‘SimHei’)
plt.show()
plt.savefig(‘e:/06.png’)
#计算每日涨跌幅度,pct_change()函数用来计算两个相邻数字之间的变化率
stock[‘Daily Return’] = stock[‘close’].pct_change()

kdeplot函数绘制核密度估计图,dropna()方法删除缺失数据

sns.kdeplot(stock[‘Daily Return’].dropna())

处理画图:
#排序
df2 = df1.sort_values(axis = 0,ascending = True,by=[‘date’]) #按列升序
filename3 =open(‘d:/bigdata/数据0.csv’,encoding=’ utf_8_sig’)
df3 = pd.read_csv(filename3,encoding=’ utf_8_sig’)
df3.sort_values(by=‘date’).to_csv(‘d:/bigdata/数据.csv’,encoding=’ utf_8_sig’)
df4 = df1[[‘date’,‘p_change’]].sort_values(by=‘date’)
df4.to_csv(‘d:/bigdata/(已清洗).csv’,encoding=’ utf_8_sig’)

#文件读取
#更改列类型
df4 = pd.read_csv(filename3 ,dtype={‘20170331’:str},encoding=‘utf_8_sig’)
#读取使用列,读取前几行
usecols=[0,1],nrows=5
#删除
df3.drop([‘季度’],inplace=True)

#文件筛选
#1
df3 = df2[[ ‘20170331’, ‘20170630’, ‘20170930’, ‘20171231’]][(df2.报表日期 ‘减:所得税费用’)]
#2
df3 = df2[[‘报表日期’,‘20170331’]][(df2.报表日期
’营业成本’)|(df2.报表日期==‘营业税金及附加’)|(df2.报表日期==‘销售费用’)|(df2.报表日期==‘管理费用’)|(df2.报表日期==‘营业成本’)|(df2.报表日期==‘财务费用’)|(df2.报表日期==‘资产减值损失’)]
#3

#更改列标
df3 = df2.rename(index={‘Unnamed: 0’:‘季度’,‘20170331’:‘第一季度’,‘20170630’:‘第二季度’,‘20170930’:‘第三季度’,‘20171231’:‘第四季度’})

转字典:
filename=‘d:/bigdata/利润表.csv’
with open(filename,encoding=‘utf_8_sig’) as f:
r=csv.DictReader(f)
d={} #空字典,用来保存各季度所得税
for row in r:
if row[‘报表日期’] == ‘减:所得税费用’:
d[‘第一季度’] = float(row[‘20170331’])
d[‘第二季度’] = float(row[‘20170630’])
d[‘第三季度’] = float(row[‘20170930’])
d[‘第四季度’] = float(row[‘20171231’])
#print(d)
sns.set_style(“whitegrid”)
plt.rcParams[‘font.sans-serif’] = [‘SimHei’] # 中文字体设置-黑体
plt.rcParams[‘axes.unicode_minus’] = False # 解决保存图像是负号’-'显示为方块的问题
sns.set(font=‘SimHei’) # 解决Seaborn中文显示问题
sns.barplot(x=list(d.keys()),y=list(d.values()))
plt.title(‘各季度所得税’)
plt.xlabel(‘季度’)
plt.ylabel(‘所得税’)
plt.savefig(‘d:/bigdata/所得税柱状图.png’)
plt.show()
break

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

import tushare as ts
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
df1 = ts.get_stock_basics()
#print(df1)
#df1.to_csv(‘d:/bigdata/沪深上市公司基本情况数据.csv’,encoding=‘utf_8_sig’)
df2 = df1[[‘name’,‘totalAssets’]][(df1.name==‘徐工机械’)]
max = float(df2.totalAssets)*1.2
min = float(df2.totalAssets)*0.8
print(max,min)
df3 = df1[[‘name’,‘fixedAssets’]][(df1.industry==‘工程机械’)&(df1.totalAssets>=min)&(df1.totalAssets<=max)]
#折线图
df3.plot(legend=True,figsize=(10,7))
plt.show()
sns.set_style(“white”)
plt.rcParams[‘font.sans-serif’] = [‘SimHei’] # 中文字体设置-黑体
plt.rcParams[‘axes.unicode_minus’] = False # 解决保存图像是负号’-'显示为方块的问题
#柱状图
sns.set(font=‘SimHei’) # 解决Seaborn中文显示问题作图
sns.barplot(x=df3.name,y=df3.fixedAssets)
plt.title(‘各企业固定资产柱状图’, fontproperties=‘SimHei’)
plt.show()
#饼图
plt.pie(x=df3.fixedAssets,labels=df3.name)
plt.show()
plt.savefig(‘各企业固定资产柱状图.png’,encoding=‘utf_8_sig’)

文件名为:2017年第一季度营业成本饼状图.png。
提示:利用tushare包抓取烽火通信利润表的接口为:ts.get_profit_statement(‘600498’)。
import tushare as ts
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

df = ts.get_profit_statement(‘600498’)
df.to_csv(‘d:/bigdata/烽火通信利润表.csv’,encoding=‘utf_8_sig’)
df1 = df[[‘报表日期’,‘20170331’]][(df.报表日期==‘营业成本’)|(df.报表日期==‘营业税金及附加’)|(df.报表日期==‘销售费用’)|(df.报表日期==‘管理费用’)|(df.报表日期==‘财务费用’)|(df.报表日期==‘资产减值损失’)|(df.报表日期==‘公允价值变动收益’)|(df.报表日期==‘投资收益’)]
print(df1)
#df1.T
df1.to_csv(‘e:/1’,encoding=‘utf_8_sig’)
filename = open(‘e:/1’,encoding=‘utf_8_sig’)
df2 = pd.read_csv(filename,encoding=‘utf_8_sig’)
x=[‘营业成本’,‘营业税金及附加’,‘销售费用’,‘管理费用’,‘财务费用’,‘资产减值损失’,‘公允价值变动收益’, ‘投资收益’]
y=df1[‘20170331’]
plt.figure(figsize=(10,8))
plt.title(‘第一季度营业成本’, fontproperties=‘SimHei’)
plt.rcParams[‘font.sans-serif’] = [‘SimHei’] # 中文字体设置-黑体
plt.rcParams[‘axes.unicode_minus’] = False # 解决保存图像是负号’-'显示为方块的问题
sns.set(font=‘SimHei’) # 解决Seaborn中文显示问题作图
plt.pie(df1[‘20170331’],labels=x)
plt.show()
plt.savefig(‘2017年第一季度营业成本饼状图.png’,encoding=‘utf_8_sig’)

文件名为:烽火通信2017年末利润表.csv
编写python程序,根据文件在一张图片上按季度生成每季度的所得税的柱状图。大小为(10,7),存储为png格式。
文件名为:季度所得税柱状图.png
import tushare as ts
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
df1 = ts.get_profit_statement(‘600498’)
df1.to_csv(‘D:\BigData\烽火通信2017年末利润表.csv’,encoding=‘utf_8_sig’)
filename1 =open(‘D:\BigData\烽火通信2017年末利润表.csv’,encoding=‘utf_8_sig’)
df2 = pd.read_csv(filename1,encoding=‘utf_8_sig’)
df3 = df2[[‘报表日期’,‘20170331’,‘20170630’,‘20170930’,‘20171231’]][(df2.报表日期==‘减:所得税费用’)]
df4 = df3.T
df4.to_csv(‘d:/1’,encoding=‘utf_8_sig’)
filename2 =open(‘d:/1’,encoding=‘utf_8_sig’)
df5 = pd.read_csv(filename2,encoding=‘utf_8_sig’,skiprows=1)
plt.rcParams[‘font.sans-serif’] = [‘SimHei’] # 中文字体设置-黑体
plt.rcParams[‘axes.unicode_minus’] = False # 解决保存图像是负号’-'显示为方块的问题
sns.set(font=‘SimHei’) # 解决Seaborn中文显示问题作图
plt.figure(figsize=(10,7))
x=[‘第一季度’,‘第二季度’,‘第三季度’,‘第四季度’]
y=df5[‘减:所得税费用’]
sns.barplot(x,y)
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值