如何用python做出超炫酷图表?

栏目: Python · 发布时间: 7年前

内容简介:CDA数据分析研究院原创作品,转载需授权小编总是被那些玩转数据、利用数据做出超炫酷图表的大佬深深折服,膝盖都不够给他们。进行数据可视化做出超炫图表的软件有很多,今天小编也用数据分析常用的python来演示一下如何做出精彩的数据可视化呈现。

如何用 <a href='https://www.codercto.com/topics/20097.html'>python</a> 做出超炫酷图表?

CDA数据分析研究院原创作品,转载需授权

小编总是被那些玩转数据、利用数据做出超炫酷图表的大佬深深折服,膝盖都不够给他们。进行数据可视化做出超炫图表的软件有很多,今天小编也用数据分析常用的python来演示一下如何做出精彩的数据可视化呈现。

导入相关的库和加载数据

import numpy as np

import pandas as pd

import seaborn as sns

import matplotlib.pyplot as plt

from datetime import date, timedelta, datetime

设置路径和加载数据

小编使用的是一个记录美国1908年到2009年飞机出事和死亡乘客记录的数据。

import os

os.chdir(r'D:dataair_data')

Data=pd.read_csv('airplane.csv')

查看各列有没有缺失值:

Data.isnull().sum()

如何用python做出超炫酷图表?

对缺失数据进行清洗:

Data['Time'] = Data['Time'].replace(np.nan, '00:00')

Data['Time'] = Data['Time'].str.replace('c: ', '')

Data['Time'] = Data['Time'].str.replace('c:', '')

Data['Time'] = Data['Time'].str.replace('c', '')

Data['Time'] = Data['Time'].str.replace('12'20', '12:20')

Data['Time'] = Data['Time'].str.replace('18.40', '18:40')

Data['Time'] = Data['Time'].str.replace('0943', '09:43')

Data['Time'] = Data['Time'].str.replace('22'08', '22:08')

Data['Time'] = Data['Time'].str.replace('114:20', '00:00')

Data['Time'] = Data['Date'] + ' ' + Data['Time']

return datetime.strptime(x, '%m/%d/%Y %H:%M')

Data['Time'] = Data['Time'].apply(todate)

print('Date ranges from ' + str(Data.Time.min()) + ' to ' + str(Data.Time.max()))

Data.Operator = Data.Operator.str.upper()

如何用python做出超炫酷图表?

数据可视化

绘制1908年到2009年飞机出事频数的折线图,大概得出一个趋势变化。

Temp = Data.groupby(Data.Time.dt.year)[['Date']].count()

Temp = Temp.rename(columns={"Date": "Count"})

plt.figure(figsize=(12,6))

plt.style.use('bmh')

plt.plot(Temp.index, 'Count', data=Temp, color='blue', marker = ".", linewidth=1)

plt.xlabel('Year', fontsize=10)

plt.ylabel('Count', fontsize=10)

plt.title('Count of accidents by Year', loc='Center', fontsize=14)

plt.show()

如何用python做出超炫酷图表?

我们把时间再精细化点,观察每月,每个星期,甚至每小时的事故,这次我们不看趋势,看量,绘制条形图。

import matplotlib.pylab as pl

import matplotlib.gridspec as gridspec

gs = gridspec.GridSpec(2, 2)

pl.figure(figsize=(15,10))

plt.style.use('seaborn-muted')

ax = pl.subplot(gs[0, :]) # row 0, col 0

sns.barplot(Data.groupby(Data.Time.dt.month)[['Date']].count().index, 'Date', data=Data.groupby(Data.Time.dt.month)[['Date']].count(), color='lightskyblue', linewidth=2)

plt.xticks(Data.groupby(Data.Time.dt.month)[['Date']].count().index, ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'])

plt.xlabel('Month', fontsize=10)

plt.ylabel('Count', fontsize=10)

plt.title('Count of accidents by Month', loc='Center', fontsize=14)

ax = pl.subplot(gs[1, 0])

sns.barplot(Data.groupby(Data.Time.dt.weekday)[['Date']].count().index, 'Date', data=Data.groupby(Data.Time.dt.weekday)[['Date']].count(), color='lightskyblue', linewidth=2)

plt.xticks(Data.groupby(Data.Time.dt.weekday)[['Date']].count().index, ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'])

plt.xlabel('Day of Week', fontsize=10)

plt.ylabel('Count', fontsize=10)

plt.title('Count of accidents by Day of Week', loc='Center', fontsize=14)

ax = pl.subplot(gs[1, 1])

sns.barplot(Data[Data.Time.dt.hour != 0].groupby(Data.Time.dt.hour)[['Date']].count().index, 'Date', data=Data[Data.Time.dt.hour != 0].groupby(Data.Time.dt.hour)[['Date']].count(),color ='lightskyblue', linewidth=2)

plt.xlabel('Hour', fontsize=10)

plt.ylabel('Count', fontsize=10)

plt.title('Count of accidents by Hour', loc='Center', fontsize=14)

plt.tight_layout()

plt.show()

如何用python做出超炫酷图表?

出事时,每年登机人数与死亡人数的对比图

Fatalities = Data.groupby(Data.Time.dt.year).sum()

Fatalities['Proportion'] = Fatalities['Fatalities'] / Fatalities['Aboard']

plt.figure(figsize=(15,6))

plt.subplot(1, 2, 1)

plt.fill_between(Fatalities.index, 'Aboard', data=Fatalities, color="skyblue", alpha=0.2)

plt.plot(Fatalities.index, 'Aboard', data=Fatalities, marker = ".", color="Slateblue", alpha=0.6, linewidth=1)

plt.fill_between(Fatalities.index, 'Fatalities', data=Fatalities, color="olive", alpha=0.2)

plt.plot(Fatalities.index, 'Fatalities', data=Fatalities, color="olive", marker = ".", alpha=0.6, linewidth=1)

plt.legend(fontsize=10)

plt.xlabel('Year', fontsize=10)

plt.ylabel('Amount of people', fontsize=10)

plt.title('Total number of people involved by Year', loc='Center', fontsize=14)

plt.subplot(1, 2, 2)

plt.plot(Fatalities.index, 'Proportion', data=Fatalities, marker = ".", color = 'red', linewidth=1)

plt.xlabel('Year', fontsize=10)

plt.ylabel('Ratio', fontsize=10)

plt.title('Fatalities / Total Ratio by Year', loc='Center', fontsize=14)

plt.tight_layout()

plt.show()

如何用python做出超炫酷图表?

通过对比图我们可以看到死亡人数变得如此之高(即使在90年代后似乎有下降的趋势)。一些人提出了一个很好的观点,那就是图表并没有显示每年所有航班发生事故的比例。因此,1970-1990年在空中交通信号灯的历史上看起来是可怕的一年,死亡人数上升,但也有可能是乘飞机的总人数上升,而实际上比例下降了。

亲爱的筒子们,想了解更多用python玩转数据、掌握炫酷可视化技能那就赶紧关注CDA数据分析师wechat公众号(cdacdacda)吧,点赞、转发、收藏,更多干货内容呈现给你噢。

https://www.cda.cn/kecheng/in...


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Four

The Four

Scott Galloway / Portfolio / 2017-10-3 / USD 28.00

NEW YORK TIMES BESTSELLER USA TODAY BESTSELLER Amazon, Apple, Facebook, and Google are the four most influential companies on the planet. Just about everyone thinks they know how they got there.......一起来看看 《The Four》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具