Pandas实战小练习,北京天气数据的数据清洗处理【文末有数据地址】

0. 问题

对于如下的Excel文件:

fcfa592a012a6100fe1bd03e101c1423.png

怎样做如下两个处理:

  1. 将日期列的“2023-01-07 星期六”,拆分成“2023-01-07”和“星期六”两列;

  2. 将最高温、最低温的两列的温度转换成数字类型,就是把数字中的小圆圈去掉;

结果形式为:

5e47f8a6b71df8b303098deeeedc5794.png

1. 读取excel数据

import pandas as pd
df = pd.read_excel(
  "./datas/beijing_tianqi/北京10年天气数据.xlsx", 
  engine="openpyxl")
df.head()

日期最高温最低温天气风力风向
02012-01-01 周日-4°多云~阴无持续风向微风
12012-01-02 周一-6°北风4-5级
22012-01-03 周二-8°北风~无持续风向3-4级~微风
32012-01-04 周三-10°无持续风向微风
42012-01-05 周四-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()

日期最高温最低温天气风力风向星期
02012-01-01-4°多云~阴无持续风向微风周日
12012-01-02-6°北风4-5级周一
22012-01-03-8°北风~无持续风向3-4级~微风周二
32012-01-04-10°无持续风向微风周三
42012-01-05-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()

日期最高温最低温天气风力风向星期
02012-01-013-4多云~阴无持续风向微风周日
12012-01-022-6北风4-5级周一
22012-01-031-8北风~无持续风向3-4级~微风周二
32012-01-041-10无持续风向微风周三
42012-01-052-8晴~多云无持续风向微风周四
df.dtypes
日期      object
最高温      int64
最低温      int64
天气      object
风力风向    object
星期      object
dtype: object

4. 数据文件地址:

http://www.crazyant.net/wp-content/uploads/2023/01/%E5%8C%97%E4%BA%AC10%E5%B9%B4%E5%A4%A9%E6%B0%94%E6%95%B0%E6%8D%AE.xlsx

查看视频:

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值