python数据可视化:
# -*- coding: utf-8 -*-
#Author Mr.xu
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
filename = 'F:\\数据分析数据\\金融年度数据.csv'
f = open(filename)
#需要过滤脏数据
df = pd.read_csv(f)
数据库:年度数据 Unnamed: 1 ... Unnamed: 9 Unnamed: 10
0 时间:最近10年 NaN ... NaN NaN
1 指标 2017年 ... 2009年 2008年
2 境内上市公司数(A、B股)(家) 3485 ... 1718 1625
3 上市股票数目(只) NaN ... 1804 1711
4 A股股票数目(只) NaN ... 1696 1602
5 B股股票数目(只) NaN ... 108 109
6 股票总发行股本(亿股) 53747 ... 20606.26 18900.12
7 A股发行股本(亿股) NaN ... 20332.77 18629.77
8 B股发行股本(亿股) NaN ... 273.49 270.35
9 流通股本(亿股) 45045 ... 14200.19 6964.97
10 A股流通股本(亿股) NaN ... 13928.17 6696.76
11 B股流通股本(亿股) NaN ... 271.48 268.21
12 股票市价总值(亿元) 567086 ... 243939.12 121366.43
13 A股市价总值(亿元) NaN ... 242127.01 120566.55
14 B股市价总值(亿元) NaN ... 1812.11 799.88
15 股票流通市值(亿元) 449298 ... 151258.65 45213.9
16 A股流通市值(亿元) NaN ... 149455.96 44419.11
17 B股流通市值(亿元) NaN ... 1802.69 794.79
18 股票成交金额(亿元) 1124625 ... 535987 267112.66
19 A股成交金额(亿元) NaN ... 533889 265890.43
20 B股成交金额(亿元) NaN ... 2097 1222.23
21 总成交股数(亿股) 87781 ... 51106.99 24131.39
22 A股成交股数(亿股) NaN ... 50648.91 23912.78
23 B股成交股数(亿股) NaN ... 458.09 218.62
24 上证综合指数最高 NaN ... 3478 5522.8
25 上证综合指数最低 NaN ... 1844.1 1664.9
26 上证综合指数收盘 NaN ... 3277.1 1820.8
27 深证综合指数最高 NaN ... 1240.6 1584.4
28 深证综合指数最低 NaN ... 557.7 452.3
29 深证综合指数收盘 NaN ... 1201.3 553.3
30 注:1.根据证监会的建议,境内上市公司数采用新的统计分类。 NaN ... NaN NaN
31 2.股票总发行股本中含(A+H)股公司发行的H股。 NaN ... NaN NaN
32 数据来源:国家统计局 NaN ... NaN NaN
df = pd.read_csv(f,header=2).head(28)
指标 2017年 ... 2009年 2008年
0 境内上市公司数(A、B股)(家) 3485.0 ... 1718.00 1625.00
1 上市股票数目(只) NaN ... 1804.00 1711.00
2 A股股票数目(只) NaN ... 1696.00 1602.00
3 B股股票数目(只) NaN ... 108.00 109.00
4 股票总发行股本(亿股) 53747.0 ... 20606.26 18900.12
5 A股发行股本(亿股) NaN ... 20332.77 18629.77
6 B股发行股本(亿股) NaN ... 273.49 270.35
7 流通股本(亿股) 45045.0 ... 14200.19 6964.97
8 A股流通股本(亿股) NaN ... 13928.17 6696.76
9 B股流通股本(亿股) NaN ... 271.48 268.21
10 股票市价总值(亿元) 567086.0 ... 243939.12 121366.43
11 A股市价总值(亿元) NaN ... 242127.01 120566.55
12 B股市价总值(亿元) NaN ... 1812.11 799.88
13 股票流通市值(亿元) 449298.0 ... 151258.65 45213.90
14 A股流通市值(亿元) NaN ... 149455.96 44419.11
15 B股流通市值(亿元) NaN ... 1802.69 794.79
16 股票成交金额(亿元) 1124625.0 ... 535987.00 267112.66
17 A股成交金额(亿元) NaN ... 533889.00 265890.43
18 B股成交金额(亿元) NaN ... 2097.00 1222.23
19 总成交股数(亿股) 87781.0 ... 51106.99 24131.39
20 A股成交股数(亿股) NaN ... 50648.91 23912.78
21 B股成交股数(亿股) NaN ... 458.09 218.62
22 上证综合指数最高 NaN ... 3478.00 5522.80
23 上证综合指数最低 NaN ... 1844.10 1664.90
24 上证综合指数收盘 NaN ... 3277.10 1820.80
25 深证综合指数最高 NaN ... 1240.60 1584.40
26 深证综合指数最低 NaN ... 557.70 452.30
27 深证综合指数收盘 NaN ... 1201.30 553.30
df = DataFrame(df)
#设置指标列为索引列,然后就可以用loc方法获取具体的行数
df= df.set_index(df['指标']).drop(['指标'],axis=1)
#fillna Nan值处理,设置Nan为0.
df.fillna(0,axis=1,inplace=True)
#现在获取上市股票数目和对应的年份数据
first = df.loc['上市股票数目(只)']
2017年 0.0
2016年 3134.0
2015年 2909.0
2014年 2696.0
2013年 2574.0
2012年 2579.0
2011年 2428.0
2010年 2149.0
2009年 1804.0
2008年 1711.0
#索引列为年份.然后排序
first = Series(first).sort_index()
#获取x值为索引值,y值为value.
x = first.keys()
y = first.values
#用plt 开始绘图
plt.bar(x,y,color='red')
plt.title('上市股票数目')
plt.xlabel('年份')
plt.ylabel('数量')
#显示每个bar图上面的数值
#每一对 a,b 就是一个坐标点. a表示x轴,b+100.表示文字位置柱状图上方什么位置.
#b表示y值.ha va 表示对齐方式. fontsize=9表示文字大小
for a,b in zip(x,y):
plt.text(a,b+100,b,ha='center',va='bottom',fontsize=9)
plt.show()