选择你感兴趣的任何地方,通过可视化将其降雨量呈现出来。为此可先只只涵盖一个月的数据,确定代码正确无误后,再使用一整年的数所来运行它
我选择广州2019年降雨量数据进行分析。其中本人不是天文地理专业,不知道"Tr"是什么意思,所以我设置为0。
本人因为年纪较大,学历没有本科。现在在广州做辅警。希望找一份工资较高的工作。
网站因为是西班语,所以为了方便阅读请转为英语
网站的Excel数据的日期格式感觉需要转换,方便排序。不知有无更好的方法。所以搞了很久。可能因为本人智力较低也有关系。
例如:网站Excel数据 01/10/2019 代表2019年10月1日。%d%m%Y 排列的方式比较奇芭。

guangzhou_prec_2020_09.py
#__author__ = 'Liu Shao Ji'
#encoding=utf-8
#01.导入用于获取指定目录下的文件名列表
from C16.try_page_324.try_16_3.data_handle import handle
#01.因为网站每次最多只能下载一个月31天的数据,所以要下载12次
#http://www.meteomanz.com/index?l=1&cou=2250&ind=00000&ty=d&d1=02&m1=10&y1=2020&d2=02&m2=10&y2=2020
#02.把所有excel放在guangzhou_weather_excel_set目录下
#03.使用looking_for_file_names获取上面目录下的excels名称的列表
#04.把所有excel合拼
#04.天气文件excel的时间好难排序,要格式化时间列
#05.用合并后的excel生成图表
#01.根据目录名这个参数获取文件名列表
#02.目录中多个excel并成一个excel
file_dir="/home/humanlsj/Python3_Study/C16/try_page_324/try_16_3/guangzhou_weather_excel_set/"
target_xls="/home/humanlsj/Python3_Study/C16/try_page_324/try_16_3/clean_guangzhou_weather_excel_set/guangzhou_weather_data_2019.xls"
excel_data=handle(file_dir,target_xls)
file_name_list=excel_data.get_file_name_list()
excel_data.excel_conbination(file_name_list)
excel_data.excel_soft()
excel_data.draw_map()
#data_handle.py
#__author__ = 'Liu Shao Ji'
#encoding=utf-8
#00.问题日期格式
#01.用于检索目录中的文件名
import os
#02.用于打开excel
import xlrd
#03.用于写入excel
import xlsxwriter
#04.用于对下载文件的非正常日期进行转换
from datetime import datetime
#05.用plplot绘图
import matplotlib.pyplot as plt
#06.通配符
import re
#07.Excel处理的 pandas,想用于排序
import numpy as np
import time
import pandas as pd
#0.8用于设置y轴的范围
from matplotlib.pyplot import MultipleLocator
class handle():
def __init__(self,ora_dir,target_xls):
self.ora_dir=ora_dir
self.target_xls=target_xls
#01.获取指定目录下的所有文件名称
def get_file_name_list(self):
for root, dirs, files in os.walk(self.ora_dir):
# print(root) #当前目录路径
# print(dirs) #当前路径下所有子目录
# print(files) #当前路径下所有非目录子文件
excel_name_list=[]
for file in files:
excel_name=str(root)+str(file)
# print(full_name)
excel_name_list.append(excel_name)
# print(full_name_list)
return excel_name_list
#转换日期
def get_normal_date_format(self,str_date):
"""日期"""
# list_date=[]
# print("lst_date的格式是:"+str(type(list_date)))
# print(list_date)
# print("lst_date[0]的格式是"+str(list_date[0]))
#head
# list_date = str_date.split('/')
# new_str=list_date[2]+ \
# "/"+ \
# list_date[1]+ \
# "/"+ \
# list_date[0]
# return new_str
#tail
list_date = str_date.split('/')
new_str=list_date[2]+'-'+list_date[1]+'-'+list_date[0]
return new_str
# lst_date.pop(-1)
# str_url = '/'.join(str_url)+'/'
# return str_url
#02.根据excel文件名列表,合并后文件的存放路径,生成一个合并后的excel文件
# def excel_conbination(excel_name_list,target_xls):
def excel_conbination(self,excel_name_list):
data=[]#无表头的数据
table_header=[]#列表 表头
for excel_name in excel_name_list:
read_excel_data=xlrd.open_workbook(excel_name)
for sheet in read_excel_data.sheets():
for rownum in range(sheet.nrows):
if rownum == 0:
table_header=sheet.row_values(0)
else:
data.append(sheet.row_values(rownum))
# print("sheet.row_values(0)是什么?"+str(sheet.row_values(0)))
# print("table_header是什么?"+str(table_header))
# print(data)
#test
# print("以前data的长度"+str(len(data)))
# print("以前data是什么"+str(data))
#插入表头
# data.insert(0,table_header)
#test
# print("以后data的长度"+str(len(data)))
# print("以后data是什么"+str(data))
#现在data包含表头和所有数据
#同时用wps打开excel时,程序会报错
# test
workbook=xlsxwriter.Workbook(self.target_xls)
worksheet=workbook.add_worksheet()
font=workbook.add_format({"font_size":14})
for i in range(len(data)):
for j in range(len(data[i])):
big_num=int((str(i)+str(j)))
# if data[i]+data[j]%10==0:
worksheet.write_row(0,0,table_header,0)
if big_num%10 == 0 or big_num == 0:
value_1=self.get_normal_date_format(data[i][j])
# print("value1是什么?"+str(value_1))
worksheet.write(i+1,j,str(value_1),font)
# print("value1类型:"+str(type(value_1)))
else:
value_2=data[i][j]
# print("value2是什么?"+value_2)
worksheet.write(i+1,j,value_2,font)
# print("i是什么?"+str(i))
# print("j是什么"+str(j))
# print(str(i)+str(j))
# print("data[i][j]是什么?"+str(data[i][j]))
# print("data[i][j]是什么?"+str(type(data[i][j])))
###
workbook.close()
#未完成
#对excel进行排序
def excel_soft(self):
# lc = pd.DataFrame(pd.read_excel(self.target_xls),index='Date')
# lc.sort_index(ascending=True)
# print("以前lc是什么?"+str(lc))
# lc.to_excel(self.target_xls)
lc=pd.read_excel(self.target_xls,index_col='Date')
lc.sort_values(by='Date',inplace=True,ascending=True)
# print("excel soft 里面的")
# print(lc)
lc.to_excel(self.target_xls)
print("excel_soft is ok")
#根据合拼后的excel表绘图
def draw_map(self):
data=[]
dates,precs=[],[]
read_excel_data=xlrd.open_workbook(self.target_xls)
print("001 Ok")
for sheet in read_excel_data.sheets():
for rownum in range(sheet.nrows):
data.append(sheet.row_values(rownum))
#去掉首行
for row in data[1:0]:
try:
#这里要改
# print("row的值是"+str(row))
current_date=datetime.strptime(row[0],"%Y-%m-%d")
print("cureent_date的值:"+str(current_date))
prec=row[4]
except ValueError:
print(str(current_date),'missing data')
else:
dates.append(current_date)
precs.append(prec)
for index,column_reader in enumerate(data[1:]):
#column_reader是字符串
struct_date=time.strptime((column_reader[0]),"%Y-%m-%d")
#str_date的类型是time.struct_time
# print("str_date的值是"+str((struct_date)))
# print("str_date的类型是"+str(type(struct_date)))
str_time=time.strftime("%Y-%m-%d",struct_date)
# print("str_date的值是"+str((str_time)))
# print("str_date的类型是"+str(type(str_time)))
datetime_date=datetime.strptime(str_time,"%Y-%m-%d")
# print("datetime_date的值是"+str((datetime_date)))
# print("datetime_date的类型是"+str(type(datetime_date)))
dates.append(datetime_date)
print("column_reader[4]的值"+str(column_reader[4]))
print("column_reader[4]的类型"+str(type(column_reader[4])))
if str(column_reader[4])=='Tr':
column_reader[4]='0.0'
print("column_reader[4]的值"+str(column_reader[4]))
print("column_reader[4]的类型"+str(type(column_reader[4])))
precs.append(float(column_reader[4]))
# print("日期:"+str(dates))
print("降雨量:"+str(precs))
fig = plt.figure(dpi=128,figsize=(10,6))
print("column_reader[0]的值:"+str(column_reader[0]))
print("column_reader[0]的类型:"+str(type(column_reader[0])))
# print("dates的值是多少:"+str(dates))
# print("dates[0]的类型是什么:"+str(type(dates[0])))
plt.plot(dates,precs,c='blue')
title="guangzhou Prec. (mm) 2019\nGuangDong,CHINA"
plt.title(title,fontsize=24)
plt.xlabel('',fontsize=16)
fig.autofmt_xdate()
plt.ylabel("Prec. (mm)",fontsize=16)
plt.tick_params(axis='both',which='major',labelsize=10)
plt.show()
# #test_sample
# file_dir="/home/humanlsj/Python3_Study/C16/try_page_324/try_16_3/guangzhou_weather_excel_set/"
# target_xls="/home/humanlsj/Python3_Study/C16/try_page_324/try_16_3/clean_guangzhou_weather_excel_set/guangzhou_weather_data_2019.xls"
# excel_data=handle(file_dir,target_xls)
# file_name_list=excel_data.get_file_name_list()
# # for f in file_name_list:
# # print(f)
# excel_data.excel_conbination(file_name_list)
# excel_data.excel_soft()
# excel_data.draw_map()
