- 最新
- 精选
- 区块链
- 汽车
- 创意科技
- 媒体达人
- 电影音乐
- 娱乐休闲
- 生活旅行
- 学习工具
- 历史读书
- 金融理财
- 美食菜谱
推荐 :手摸手教你数据可视化!(附实例讲解)
转自:Datawhale;作者:CrescentAI,华南理工大学,Datawhale优秀学习者
本文对课程数据集及泰坦尼克号数据集进行了实例讲解,一步一步带你绘制数据可视化中常用的五种图形,并对数据间可能存在的相关性做出了阐述。
常用图形有:
plt.scatter() 散点图 plt.plot() 折线图 plt.bar() 直方图 plt.pie() 饼图 plt.boxplot() 箱型图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
#图可以显示中文和负号
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False
data = pd.read_excel("D:\data\student-score\student-score.xlsx")
data.head()
data.loc[:,"总分"] = data.loc[:,"语文"] + data.loc[:,"数学"] + data.loc[:,"英语"] #重新计算总分成绩
data.head()
接着我们还可以查看其数据结构:
data.shape #查看数据结构# 输出
(629, 6)
以及查看各学科的缺失值情况:
data.isnull().sum() #查看缺失值情况'''
姓名 0
学校 0
语文 1
数学 0
英语 0
总分 1
dtype: int64
'''
对于这些缺失值,我们可以选择使用dropna()函数删除:
data = data.dropna() #删除缺失值data.shape # (628, 6)
再使用describe()函数进行简单的统计描述:
data.describe() #简单统计描述data1=gp.mean() #分组后的聚合运算为计算均值
data1.head()
得到结果:
plt.figure(figsize=(6,4))
plt.scatter(data1["总分"],data1["语文"],marker='v')
plt.scatter(data1["总分"],data1["数学"],marker='o')
plt.scatter(data1["总分"],data1["英语"],marker='*')
plt.title("各学校成绩散点图",fontsize = 14)
plt.xlabel("总成绩")
plt.ylabel("各学科成绩")
plt.legend(["语文","数学","英语"]);
plt.figure(figsize=(6,4))
plt.scatter(data1["总分"],data1["语文"],marker='v')
plt.title("各学校语文与总分成绩散点图",fontsize = 14)
plt.xlabel("总成绩")
plt.ylabel("各学科成绩")
plt.legend(["语文"])
#
data1.plot.scatter(x = "总分", y = "语文")
plt.title("语文与总分成绩散点图")
data1.plot.scatter(x = "总分", y = "数学")
plt.title("数学与总分成绩散点图")
data1.plot.scatter(x = "总分", y = "英语")
plt.title("英语与总分成绩散点图")
# plt.show()
得到Text(0.5, 1.0, '英语与总分成绩散点图'),且散点图结果如下:
data1
ser1
得到输出:
0 101 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19
10 1
11 20
12 21
13 2
14 3
15 4
16 5
17 6
18 7
19 8
20 9
Name: 序号, dtype: object
接着:
ser1 = ser1.astype("int")ser1
得到输出:
0 101 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19
10 1
11 20
12 21
13 2
14 3
15 4
16 5
17 6
18 7
19 8
20 9
Name: 序号, dtype: int32
可以尝试删除序号列,并且重设索引列:
del data1["序号"]data1.index = ser1
data1
再按照索引排序,可得到相应结果:
data1=data1.sort_index()data1
接着查看一共有多少行数据作为x轴数据
len(data1) # 21再将各科成绩数据进行绘图,得到折线图结果:
plt.figure(figsize=(10,4))plt.plot(range(21),data1.iloc[:,1],'-*') #选取语文成绩数据
plt.plot(range(21),data1.iloc[:,2],'-o') #选取数学成绩数据
plt.plot(range(21),data1.iloc[:,3],'-v') #选取英语成绩数据
plt.title('各学科成绩变化走势图')
plt.xlabel('各学校')
plt.ylabel('学科成绩')
plt.xticks(range(21),data1["学校"],rotation=30) #rotation=30控制文字倾斜角度
plt.legend(['语文','数学','英语']);
yw = yw.T
yw
yw1 = yw.drop("学校",axis=0) #删多余的行信息
yw1
再将语文成绩数据进行绘图,得到直方图结果:
# 每个学校语文平均成绩的直方图plt.figure(figsize=(12,4))
plt.bar(range(21),yw.loc["语文",:],width=0.5)
plt.title("语文成绩直方图",fontsize = 14)
plt.ylabel("语文成绩",fontsize = 14)
plt.xticks(range(21),yw.iloc[0],rotation=30,fontsize = 12); #x轴刻度为各学校名称
sx = sx.T
sx
sx = sx.drop("学校",axis=0)
sx
再将数学平均成绩数据进行绘图,得到直方图结果:
# 每个学校数学平均成绩的直方图plt.figure(figsize=(12,4))
plt.bar(range(21),sx.loc["数学",:],width=0.5)
plt.title("数学成绩直方图",fontsize = 14)
plt.ylabel("数学成绩",fontsize = 14)
plt.xticks(range(21),yw.iloc[0],rotation=30,fontsize = 12); #x轴刻度为各学校名称
将多个学科成绩画到一副图中
data1data2.head()
data2.plot.bar(x = '学校',y = ['语文','数学','英语'],figsize=(16,6),width=0.7,rot = 30,title = "各学科成绩直方图"); #rot空值标签倾斜程度
plt.pie(data2.iloc[0,1:] #选取数据源
,labels=['语文','数学','英语']
,autopct='%1.2f') #设置百分比经度
# ,explode=[0.1,0.02,0.02] #设置饼图各个扇区之间的间隙
# ,colors=['r','g','b']) #设置饼图各个扇区的颜色
plt.title('第1小学各学科成绩占比',fontsize=12);
#fontsize设定字体的大小,xlabel,ylabel,title里面都可以设定
fig1 = pic2.add_subplot(2,2,1) #第一个子图
plt.pie(data2.iloc[0,1:] #选取数据源 第10小学各学科成绩
,labels=['语文','数学','英语']
,autopct='%1.2f') #设置百分比经度
# ,explode=[0.1,0.02,0.02] #设置饼图各个扇区之间的间隙
# ,colors=['r','g','b']) #设置饼图各个扇区的颜色
plt.title('第1小学各学科成绩占比',fontsize=12)
fig2 = pic2.add_subplot(2,2,2) #第二个字图
plt.pie(data2.iloc[1,1:] #选取数据源,第11小学各学科成绩
,labels=['语文','数学','英语']
,autopct='%1.2f') #设置百分比经度
# ,explode=[0.1,0.02,0.02] #设置饼图各个扇区之间的间隙
# ,colors=['r','g','b']) #设置饼图各个扇区的颜色
plt.title('第2小学各学科成绩占比',fontsize=12)
fig3 = pic2.add_subplot(2,2,3) #第二个字图
plt.pie(data2.iloc[2,1:] #选取数据源,第12小学各学科成绩
,labels=['语文','数学','英语']
,autopct='%1.2f') #设置百分比经度
# ,explode=[0.1,0.02,0.02] #设置饼图各个扇区之间的间隙
# ,colors=['r','g','b']) #设置饼图各个扇区的颜色
plt.title('第3小学各学科成绩占比',fontsize=12)
fig4 = pic2.add_subplot(2,2,4) #第二个字图
plt.pie(data2.iloc[3,1:] #选取数据源,第13小学各学科成绩
,labels=['语文','数学','英语']
,autopct='%1.2f') #设置百分比经度
# ,explode=[0.1,0.02,0.02] #设置饼图各个扇区之间的间隙
# ,colors=['r','g','b']) #设置饼图各个扇区的颜色
plt.title('第4小学各学科成绩占比',fontsize=12);
score = (list(data_1.iloc[:,2]),list(data_1.iloc[:,3]),list(data_1.iloc[:,4]))
plt.figure(figsize=(8,6))
plt.boxplot(score
,labels=['语文','数学','英语']
,notch=True #缺口中位数位置
,sym='*'#设定异常值的形状
,whis=1.5); #设定几倍标准差之外的数据算是异常值,默认是1.5
text.head()
sex.plot.bar(color='chocolate')
plt.title('survived_count')
plt.show()
女性比男性生存人数多。
男女中生存人与死亡人数的比例 text.groupby(['Sex','Survived'])['Survived'].count().unstack().plot(kind='bar',stacked='True')plt.title('survived_count')
plt.ylabel('count')
# Text(0, 0.5, 'count')
男女性生存与死亡人数的占比偏差比较大。
不同票价的人生存和死亡人数分布情况 # 排序后绘折线图fare_sur = text.groupby(['Fare'])['Survived'].value_counts().sort_values(ascending=False)
fig = plt.figure(figsize=(20, 18))
fare_sur.plot(grid=True)
plt.legend()
plt.show()
不同的票价所反映出来的生存人数是非常明显的,票价低的人死亡数量高是因为离甲板远,且逃生机会大大降低。
# 排序前绘折线图fare_sur1 = text.groupby(['Fare'])['Survived'].value_counts()
fig = plt.figure(figsize=(20, 18))
fare_sur1.plot(grid=True)
plt.legend()
plt.show()
pclass_sur = text.groupby(['Pclass'])['Survived'].value_counts()
import seaborn as sns
sns.countplot(x="Pclass", hue="Survived", data=text)
#
facet.map(sns.kdeplot,'Age',shade= True)
facet.set(xlim=(0, text['Age'].max()))
facet.add_legend()
#
text.Age[text.Pclass == 2].plot(kind='kde')
text.Age[text.Pclass == 3].plot(kind='kde')
plt.xlabel("age")
plt.legend((1,2,3),loc="best")
#
「完」
已同步到看一看写下你的想法
前往“发现”-“看一看”浏览“朋友在看”
看一看入口已关闭
在“设置”-“通用”-“发现页管理”打开“看一看”入口
我知道了
已发送
取消
发送到看一看发送
推荐 :手摸手教你数据可视化!(附实例讲解)
字
发送中
微信扫一扫
使用小程序
取消 允许
取消 允许
微信版本过低
当前微信版本不支持该功能,请升级至最新版本。
我知道了 前往更新
确定删除回复吗?
取消 删除
知道了
长按识别前往小程序
本站仅按申请收录文章,版权归原作者所有
如若侵权,请联系本站删除
觉得不错,分享给更多人看到
数据分析 微信二维码
(adsbygoogle = window.adsbygoogle || []).push({}); 分享这篇文章
数据分析 最新文章
推荐 :手摸手教你数据可视化!(附实例讲解)
数据分析师正在经历的,3种职业状态
机器学习数据准备技术之旅(附链接)
干货 :算法工程师技术路线图
收藏 :社会科学数据资源汇总
达人观点 :你应该选机器学习还是数据科学?
超级干货 :最全算法学习资源汇总(附链接)
21张让你代码能力突飞猛进的速查表(神经网络、机器学习、可视化等)
推荐 :机器学习集成学习与模型融合!
分享 :准备数据时如何避免数据泄漏
(adsbygoogle = window.adsbygoogle || []).push({});
(function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); (function(){ var src = (document.location.protocol == "http:") ? "http://js.passport.qihucdn.com/11.0.1.js?ba34c9f41d18b62312e960833b3cb4ae":"https://jspassport.ssl.qhimg.com/11.0.1.js?ba34c9f41d18b62312e960833b3cb4ae"; document.write(''); })();