这是我上一届师兄师姐的一个小作业,目的是为了解使用pyechars库
航班的数据都在资源里,免费下载。
要求
计算一周内机场进港与出港航班数量,并画图。
# 读取表格,并且
# fDepartureWeekday 离港时间
# fArrivalWeekday 到港时间
import pandas as pd
from pyecharts.charts import *
df = pd.read_csv(
"data/zjsy.csv"
)
# print(df)
weekdays = ['星期一','星期二','星期三','星期四','星期五','星期六','星期日','还未知']
fDepartureNumber = {
'星期一':0,
'星期二':0,
'星期三':0,
'星期四':0,
'星期五':0,
'星期六':0,
'星期日':0,
'还未知':0
}
fArrivalNumber={
'星期一':0,
'星期二':0,
'星期三':0,
'星期四':0,
'星期五':0,
'星期六':0,
'星期日':0,
'还未知':0
}
fDepartureList = []
fArrivalList = []
for i in df['fDepartureWeekday']:
if i == '星期一':
fDepartureNumber['星期一'] += 1
elif i == '星期二':
fDepartureNumber['星期二'] += 1
elif i == '星期三':
fDepartureNumber['星期三'] += 1
elif i == '星期四':
fDepartureNumber['星期四'] += 1
elif i == '星期五':
fDepartureNumber['星期五'] += 1
elif i == '星期六':
fDepartureNumber['星期六'] += 1
elif i == '星期日':
fDepartureNumber['星期日'] += 1
else:
fDepartureNumber['还未知'] += 1
for i in df['fArrivalWeekday']:
if i == '星期一':
fArrivalNumber['星期一'] += 1
elif i == '星期二':
fArrivalNumber['星期二'] += 1
elif i == '星期三':
fArrivalNumber['星期三'] += 1
elif i == '星期四':
fArrivalNumber['星期四'] += 1
elif i == '星期五':
fArrivalNumber['星期五'] += 1
elif i == '星期六':
fArrivalNumber['星期六'] += 1
elif i == '星期日':
fArrivalNumber['星期日'] += 1
else:
fArrivalNumber['还未知'] += 1
for day in weekdays:
fDepartureList.append(fDepartureNumber[day])
for day in weekdays:
fArrivalList.append(fArrivalNumber[day])
print('fDepartureList:',fDepartureList)
print('fArrivalList:',fArrivalList)
# 查看每一天的数量
# print('星期一:',fDepartureNumber['星期一'])
# print('星期二:',fDepartureNumber['星期二'])
# print('星期三:',fDepartureNumber['星期三'])
# print('星期四:',fDepartureNumber['星期四'])
# print('星期五:',fDepartureNumber['星期五'])
# print('星期六:',fDepartureNumber['星期六'])
# print('星期日:',fDepartureNumber['星期日'])
# 判断总数是否和表格一致
# total = 0
# for day in weekdays:
# print(fDepartureNumber[day])
# total += fDepartureNumber[day]
# print(total)
# 这里就开始使用pyechars库,其实就使用了一个直方图
bar = (Bar()
.add_xaxis(weekdays)
.add_yaxis(
"fDepartureList",
fDepartureList
)
.add_yaxis(
"fArrivalList",
fArrivalList
)
)
bar.render("数据可视化-直方图.html")
结果是生成一个html文件
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Awesome-pyecharts</title>
<script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script>
</head>
<body>
<div id="60185c9ab4cc49609450dba4cfbb0a94" class="chart-container" style="width:900px; height:500px;"></div>
<script>
var chart_60185c9ab4cc49609450dba4cfbb0a94 = echarts.init(
document.getElementById('60185c9ab4cc49609450dba4cfbb0a94'), 'white', {renderer: 'canvas'});
var option_60185c9ab4cc49609450dba4cfbb0a94 = {
"animation": true,
"animationThreshold": 2000,
"animationDuration": 1000,
"animationEasing": "cubicOut",
"animationDelay": 0,
"animationDurationUpdate": 300,
"animationEasingUpdate": "cubicOut",
"animationDelayUpdate": 0,
"color": [
"#c23531",
"#2f4554",
"#61a0a8",
"#d48265",
"#749f83",
"#ca8622",
"#bda29a",
"#6e7074",
"#546570",
"#c4ccd3",
"#f05b72",
"#ef5b9c",
"#f47920",
"#905a3d",
"#fab27b",
"#2a5caa",
"#444693",
"#726930",
"#b2d235",
"#6d8346",
"#ac6767",
"#1d953f",
"#6950a1",
"#918597"
],
"series": [
{
"type": "bar",
"name": "fDepartureList",
"legendHoverLink": true,
"data": [
706,
419,
376,
672,
705,
728,
694,
0
],
"showBackground": false,
"barMinHeight": 0,
"barCategoryGap": "20%",
"barGap": "30%",
"large": false,
"largeThreshold": 400,
"seriesLayoutBy": "column",
"datasetIndex": 0,
"clip": true,
"zlevel": 0,
"z": 2,
"label": {
"show": true,
"position": "top",
"margin": 8
}
},
{
"type": "bar",
"name": "fArrivalList",
"legendHoverLink": true,
"data": [
682,
445,
378,
611,
697,
705,
688,
94
],
"showBackground": false,
"barMinHeight": 0,
"barCategoryGap": "20%",
"barGap": "30%",
"large": false,
"largeThreshold": 400,
"seriesLayoutBy": "column",
"datasetIndex": 0,
"clip": true,
"zlevel": 0,
"z": 2,
"label": {
"show": true,
"position": "top",
"margin": 8
}
}
],
"legend": [
{
"data": [
"fDepartureList",
"fArrivalList"
],
"selected": {
"fDepartureList": true,
"fArrivalList": true
}
}
],
"tooltip": {
"show": true,
"trigger": "item",
"triggerOn": "mousemove|click",
"axisPointer": {
"type": "line"
},
"showContent": true,
"alwaysShowContent": false,
"showDelay": 0,
"hideDelay": 100,
"textStyle": {
"fontSize": 14
},
"borderWidth": 0,
"padding": 5
},
"xAxis": [
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 0,
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": false,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
},
"data": [
"\u661f\u671f\u4e00",
"\u661f\u671f\u4e8c",
"\u661f\u671f\u4e09",
"\u661f\u671f\u56db",
"\u661f\u671f\u4e94",
"\u661f\u671f\u516d",
"\u661f\u671f\u65e5",
"\u8fd8\u672a\u77e5"
]
}
],
"yAxis": [
{
"show": true,
"scale": false,
"nameLocation": "end",
"nameGap": 15,
"gridIndex": 0,
"inverse": false,
"offset": 0,
"splitNumber": 5,
"minInterval": 0,
"splitLine": {
"show": false,
"lineStyle": {
"show": true,
"width": 1,
"opacity": 1,
"curveness": 0,
"type": "solid"
}
}
}
]
};
chart_60185c9ab4cc49609450dba4cfbb0a94.setOption(option_60185c9ab4cc49609450dba4cfbb0a94);
</script>
</body>
</html>
两段代码都是能运行的。
python代码还没有优化,主要还是python才学了点皮毛。
以后接着优化
芜湖,起飞