前言
一、获取原始数据
二、数据处理
1.代码
2.处理结果
总结
在工作的时候,需要做一个天气情况的报表,一开始没学习爬虫的时候,需要手动到天气网站上去截取天气数据做到表格里,复制粘贴下来的数据需要做一些处理,考虑用Python简化这些步骤。
从全国城市天气预报_城市天气预报查询_国内天气预报查询_天气网中进入需要查询的城市,选择40天天气,选中需要的内容复制粘贴到EXCEL表里,不同城市放到不同的SHEET里,序号、城市列为固定列,只需更新内容列。
由于粘贴到EXCEL里的数据形式比较规律,因此只需找到排列规律进行操作即可,观察可知同类数据所在位置为序号间隔为3的等差数列,遍历数据列取出间隔为3的数据即可,取出数据后通过数据清洗呈现为自己想要的格式,代码如下:
import pandas as pd
import numpy as np
df2excel = pd.ExcelWriter('future.xlsx',engine='xlsxwriter')
#北京
sheetName="北京"
sheet=pd.read_excel('weilai.xlsx',sheet_name=sheetName)
A=sheet["序号"]
B=sheet["内容"]
C=sheet["城市"]
D=[]
E=[]
F=[]
n1=1
n2=2
n3=3
n=1
for i in range(0,120,3):
S=B[i]
D.append(S)
for j in range(1,120,3):
S1=B[j]
E.append(S1)
for k in range(2,121,3):
S2=B[k]
F.append(S2)
DataSet1 = list(zip(D,E,F))
df = pd.DataFrame(data = DataSet1,columns=["日期","天气","温度"])
res=df['温度'].str.split('~',expand=True)
df[['低温','温度']]=res
df['温度']=df['温度'].str.replace('℃','')
riqi=df.pop('日期')
riqi=riqi.str[:5]
df.insert(0,'日期',riqi)
#上海
sheetName="上海"
sheet=pd.read_excel('weilai.xlsx',sheet_name=sheetName)
A=sheet["序号"]
B=sheet["内容"]
C=sheet["城市"]
D=[]
E=[]
F=[]
n1=1
n2=2
n3=3
n=1
for i in range(0,120,3):
S=B[i]
D.append(S)
for j in range(1,120,3):
S1=B[j]
E.append(S1)
for k in range(2,121,3):
S2=B[k]
F.append(S2)
DataSet1 = list(zip(D,E,F))
df1 = pd.DataFrame(data = DataSet1,columns=["日期","天气","温度"])
res=df1['温度'].str.split('~',expand=True)
df1[['低温','温度']]=res
df1['温度']=df1['温度'].str.replace('℃','')
riqi=df1.pop('日期')
riqi=riqi.str[:5]
df1.insert(0,'日期',riqi)
#广州
sheetName="广州"
sheet=pd.read_excel('weilai.xlsx',sheet_name=sheetName)
A=sheet["序号"]
B=sheet["内容"]
C=sheet["城市"]
D=[]
E=[]
F=[]
n1=1
n2=2
n3=3
n=1
for i in range(0,120,3):
S=B[i]
D.append(S)
for j in range(1,120,3):
S1=B[j]
E.append(S1)
for k in range(2,121,3):
S2=B[k]
F.append(S2)
DataSet1 = list(zip(D,E,F))
df3 = pd.DataFrame(data = DataSet1,columns=["日期","天气","温度"])
res=df3['温度'].str.split('~',expand=True)
df3[['低温','温度']]=res
df3['温度']=df3['温度'].str.replace('℃','')
riqi=df3.pop('日期')
riqi=riqi.str[:5]
df3.insert(0,'日期',riqi)
df.to_excel(df2excel,index=False,sheet_name="北京")
df1.to_excel(df2excel,index=False,sheet_name="上海")
df3.to_excel(df2excel,index=False,sheet_name="广州")
df2excel.save()
结果如下:
这里用ExcelWriter()函数在同一个表格里追加不同的Sheet。
df2excel = pd.ExcelWriter('future.xlsx',engine='xlsxwriter')
sheetName="北京"
sheet=pd.read_excel('weilai.xlsx',sheet_name=sheetName)
sheetName="上海"
sheet=pd.read_excel('weilai.xlsx',sheet_name=sheetName)
sheetName="广州"
sheet=pd.read_excel('weilai.xlsx',sheet_name=sheetName)
df.to_excel(df2excel,index=False,sheet_name="北京")
df1.to_excel(df2excel,index=False,sheet_name="上海")
df3.to_excel(df2excel,index=False,sheet_name="广州")
df2excel.save()
上述操作在原数据获取的时候还比较麻烦,后续考虑用爬虫的方式解决这一块。