天气数据的处理
数据地址:北京10年天气数据
1. 读取excel数据
import pandas as pd
df = pd.read_excel("./datas/beijing_tianqi/北京10年天气数据.xlsx", engine="openpyxl")
df.head()
|
日期 |
最高温 |
最低温 |
天气 |
风力风向 |
0 |
2012-01-01 周日 |
3° |
-4° |
多云~阴 |
无持续风向微风 |
1 |
2012-01-02 周一 |
2° |
-6° |
晴 |
北风4-5级 |
2 |
2012-01-03 周二 |
1° |
-8° |
晴 |
北风~无持续风向3-4级~微风 |
3 |
2012-01-04 周三 |
1° |
-10° |
晴 |
无持续风向微风 |
4 |
2012-01-05 周四 |
2° |
-8° |
晴~多云 |
无持续风向微风 |
2. 日期拆成两列
def split_date(row):
date, week = row["日期"].split()
return date, week
df[["日期", "星期"]] = df.apply(split_date, axis=1, result_type="expand")
df.head()
|
日期 |
最高温 |
最低温 |
天气 |
风力风向 |
星期 |
0 |
2012-01-01 |
3° |
-4° |
多云~阴 |
无持续风向微风 |
周日 |
1 |
2012-01-02 |
2° |
-6° |
晴 |
北风4-5级 |
周一 |
2 |
2012-01-03 |
1° |
-8° |
晴 |
北风~无持续风向3-4级~微风 |
周二 |
3 |
2012-01-04 |
1° |
-10° |
晴 |
无持续风向微风 |
周三 |
4 |
2012-01-05 |
2° |
-8° |
晴~多云 |
无持续风向微风 |
周四 |
3. 温度字符串的处理
df["最高温"] = df["最高温"].map(lambda x : int(str(x).replace("°", "")))
def get_wendu(x):
x = str(x).replace("°", "")
if x:
return int(x)
return 0
df["最低温"] = df["最低温"].map(get_wendu)
df.head()
|
日期 |
最高温 |
最低温 |
天气 |
风力风向 |
星期 |
0 |
2012-01-01 |
3 |
-4 |
多云~阴 |
无持续风向微风 |
周日 |
1 |
2012-01-02 |
2 |
-6 |
晴 |
北风4-5级 |
周一 |
2 |
2012-01-03 |
1 |
-8 |
晴 |
北风~无持续风向3-4级~微风 |
周二 |
3 |
2012-01-04 |
1 |
-10 |
晴 |
无持续风向微风 |
周三 |
4 |
2012-01-05 |
2 |
-8 |
晴~多云 |
无持续风向微风 |
周四 |
df.dtypes
日期 object
最高温 int64
最低温 int64
天气 object
风力风向 object
星期 object
dtype: object