pandas处理天气数据

news2024/11/25 0:59:58

题目分析

一、题目要求

  1. 使用Pandas读取数据;
  2. 现有的“date”列没有包含星期信息,需要根据其额外生成一列“week”,表示星
    期,例如“星期一”;
  3. 将温度处理成整型,例如将5℃处理成5,注意,其中含有非法字符,需要自行进
    行合理的处理;
  4. 风力列(wind)包含风向和风力等级,需要将其处理为两列,分别为
    wind_direction(风向)和wind_level(风力等级);
  5. 处理之后的列名包括’id’, ‘city’, ‘date’, ‘week’, ‘hightest_tem’, ‘lowest_tem’,
    ‘weather’, ‘wind_direction’, ‘wind_level’;将其重命名为’ID’, ‘城市’, ‘日期’, ‘星期’, ‘最
    高温度’, ‘最低温度’, ‘天气’, ‘风向’, ‘风力等级’;

二、对应的数据

数据详情

实现过程

1.读取数据

import pandas as pd
import datetime as dt

df = pd.read_csv('./data/day.csv')
print(df)

2.将日期处理成对应的星期几

def gen_week_day(date_str):
    '''
    根据日期生成星期
    :param date: 
    :return: 
    '''
    date = dt.datetime.strptime(date_str, '%Y-%m-%d')
    week_day = date.weekday()
    # print(week_day)
    week_dic = {0: "星期一", 1: "星期二", 2: "星期三", 3: "星期四", 4: "星期五", 5: "星期六", 6: "星期日"}
    return week_dic[week_day]

3.使用apply将那一列每一个值都使用gen_week_day

df['week'] = df['date'].apply(gen_week_day)  #
print(df)

4.将温度异常的数据提取成对应的温度,主要有如下图的问题,比如–和°℃

在这里插入图片描述

# 负号和对应的数字提取出来
def deal_tem(tem_str):
    '''
    提取负号和数字
    :param tem_str:
    :return:
    '''
    i = 0
    res = ""
    while i < len(tem_str):
        if i + 1 < len(tem_str) and tem_str[i + 1] == '-' and tem_str[i] == '-':
            res += '-'
            i += 2
        elif tem_str[i] == '-':
            res += '-'
            i += 1
        elif tem_str[i].isdigit():
            res += tem_str[i]
            i += 1
        else:
            i += 1
    return int(res)

5.在最高温以及最低温那里使用apply,将最高温以及最低温都使用deal_tem计算每一列的每一个值

df['hightest_tem'] = df['hightest_tem'].apply(deal_tem)
df['lowest_tem'] = df['lowest_tem'].apply(deal_tem)
print(df)

6.得到对应的风向等级

在这里插入图片描述

def deal_wind(wind_str):
    '''
    得到风向和等级
    :param wind_str:
    :return:
    '''
    try:
        feng_index = wind_str.find('风')
        win_direct = wind_str[:feng_index + 1]
        for idx in range(feng_index, len(wind_str)):
            if wind_str[idx].isdigit:
                level_index = idx
                break
        wind_level = wind_str[level_index:]
        return win_direct, wind_level
    except Exception:
        return '', ''

7.应用到这两列

df['wind_direction'] = df['wind'].apply(lambda x: deal_wind(x)[0])
df['wind_level'] = df['wind'].apply(lambda x: deal_wind(x)[1])

8.更改对应的列名

df = df[['id', 'city', 'date', 'week', 'hightest_tem', 'lowest_tem', 'weather', 'wind_direction', 'wind_level']]
df.columns = ['ID', '城市', '日期', '星期', '最高温度', '最低温度', '天气', '风向', '风力等级']

9.保存对应的csv文件

df.to_csv('./data/result.csv', index=False)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1852754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DAY11-力扣刷题

1.最小路径和 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 64. 最小路径和 - 力扣&#xff08;LeetCode&#xff09; class Solution {p…

链接脚本文件入门介绍

本文框架 1. Why<为什么需要链接文件>2.What<是什么及组成>2.1 MEMORY介绍2.2 SECTIONS介绍 3.How<链接文件应用>3.1 定义特定字段3.2 将变量定义在指定段3.3 将变量定义在不同的段3.4 将变量定义在指定地址3.5 将函数定义在指定段3.6 将函数定义在指定地址 …

在 iPhone 上恢复已删除联系人的 5 种简便方法

想象一下&#xff1a;您正在 iPhone 上滚动并搜索要拨打的联系人&#xff0c;但却找不到任何结果。然后您想起昨晚您试图删除一个名字相似的联系人&#xff0c;但不知何故删除了错误的联系人。或者您的孩子错误地删除了一些联系人。这些情况足以让您感到迷茫。但别担心&#xf…

TI毫米波雷达可以用串口调试助理来获取原始数据吗?

摘要&#xff1a;本文介绍一下如何使用普通的串口调试助理来读取到AWR1843毫米波雷达的数据的。 使用的硬件如下图所示。 软件就是普通的串口助理&#xff0c;我用的是SSCOM&#xff0c;其他串口助理也是可以的&#xff0c;核心作用其实就是发送一行行的指令而已。 操作方法&am…

如何识别商业电子邮件诈骗

复制此链接到微信打开阅读全部已发布文章 不要关闭它标签&#xff01;我知道很少有词组比商业、电子邮件和妥协更无趣。 但这不是一篇无聊的文章&#xff1a;这是一篇关于电子邮件骗子的文章&#xff0c;根据联邦调查局的说法&#xff0c;他们每年通过诈骗人们赚取 260 亿美元…

EtherCAT数据包抓取(wireshark)

目录 1、twincat配置 2、选择正确的网卡 3、过滤条件示例 (1) 过滤逻辑读的数据帧 (2) 过滤邮箱等配置数据 (3) 抓取读EtherCAT状态的数据帧 1、twincat配置 勾选 Device2->Adapter->Promiscuous Mode&#xff0c;重新激活配置。 2、选择正确的网卡 3、过滤条件示…

用含成员函数的类,分别输入和输出各对象中的时间(时:分:秒)

编写程序&#xff1a; 运行结果&#xff1a; 注意&#xff1a; &#xff08;1&#xff09;在主函数中调用两个成员函数时&#xff0c;应指明对象名(t1,t2)。表示调用的是哪一个对象的成员函数。t1.display()和t2.display()虽然都是调用同一个 display函数&#xff0c;但…

修复 pprof ---node_exproter访问漏洞(go-pprof-leak)

前言&#xff1a; ** 在Go语言中&#xff0c;pprof和debug包是用来检测和避免goroutine泄漏&#xff0c;避免导致goroutine泄漏&#xff0c;进而消耗大量系统资源。不过对于安全而言确又存在一定风险&#xff0c;** 风险&#xff1a; 通过node_exporter web发现 190.168.46.1…

【C++】————类和对象(中)

作者主页&#xff1a; 作者主页 本篇博客专栏&#xff1a;C 创作时间 &#xff1a;2024年6月22日 一、类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。空类中什么都没有吗&#xff1f;并不是的&#xff0c;任何一个类在我们不写的情 况下&#x…

道路 Road(百练,POJ)

题目链接: 1724 -- ROADS (poj.org) 题目描述: 思路: 这题目乍一看&#xff0c;是一个含有2个标尺的单源最短路问题&#xff0c;挺难处理的。 既然没法直接用最短路处理&#xff0c;那我们就“记录信息”&#xff0c;将花费的时间也记录进dp数组&#xff0c;然后跑“状态最短…

2024年【化工自动化控制仪表】考试及化工自动化控制仪表新版试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 化工自动化控制仪表考试是安全生产模拟考试一点通总题库中生成的一套化工自动化控制仪表新版试题&#xff0c;安全生产模拟考试一点通上化工自动化控制仪表作业手机同步练习。2024年【化工自动化控制仪表】考试及化工…

基于vue3 + ant-design 使用阿里图标库iconfont.cn

对于使用 iconfont.cn 的用户&#xff0c;通过设置 createFromIconfontCN 方法参数对象中的 scriptUrl 字段&#xff0c; 即可轻松地使用已有项目中的图标。 组件封装 IconFont <template><IconFont :type"iconType" /> </template><script se…

记一道MO数学练习题

手玩发现&#xff0c; 要么是行共线&#xff0c; 也就是说&#xff08;1,1&#xff09;填1之后&#xff0c;&#xff08;1,4&#xff09;要填1&#xff0c;&#xff08;1,7&#xff09;要填1&#xff0c; 事实上&#xff0c;可以给&#xff08;1&#xff0c;x&#xff09;&a…

docker搭建mongo副本集

1、mongo集群分类 MongoDB集群有4种类型&#xff0c;分别是主从复制、副本集、分片集群和混合集群。 MongoDB的主从复制是指在一个MongoDB集群中&#xff0c;一个节点&#xff08;主节点&#xff09;将数据写入并同步到其他节点&#xff08;从节点&#xff09;。主从复制提供…

游戏高度可配置化(二)用“模型抽象”化解游戏策划和程序员的江湖恩怨

游戏高度可配置化&#xff08;二&#xff09;用“模型抽象”化解游戏策划和程序员的江湖恩怨 码客 卢益贵 ygluu 关键词&#xff1a;模型抽象、功能抽象、抽象工厂模式、游戏服务端引擎、高度可配置化、恩怨情仇、游戏策划、数据引擎、生产消费模型、订阅-通知模型 一、前言…

Go语言之基础入门

网站&#xff1a;http://hardyfish.top/ 免费书籍分享&#xff1a; 免费专栏分享&#xff1a; Go语言优势 语法简洁&#xff0c;相比其他语言更容易上手&#xff0c;开发效率更高&#xff1b; 自带垃圾回收&#xff08;GC&#xff09;&#xff0c;不用再手动申请释放内存&…

管综 之 逻辑

1.复言命题 1.1假言推理 1.命题模型识别:当题干中出现如果那么&#xff0c;只有才&#xff0c;当且仅当等典型关联词时此题考的是简单假言推理问题 2.三步解题法:1️⃣:画箭头 2️⃣:递否 3️⃣:找答案 口诀&#xff1a; [口诀1]充分条件前推后 [口诀2]逆否命题等价于原命题 […

第13关:存储过程1、第14关:存储过程2。(2021数据库期末一)

目录 首先需要学习和了解的知识 第13关&#xff1a;存储过程1 任务描述 答案 第14关&#xff1a;存储过程2 任务描述 答案 本篇博客的答案博主是学习别人得来的&#xff0c;敢于借鉴和学习哈哈&#xff01;&#xff01; 首先需要学习和了解的知识 了解什么是存储过程以及…

3D开发工具HOOPS为BIM应用提供支持:复杂大模型实现Web端轻量化!

在数字化转型的浪潮中&#xff0c;Tech Soft 3D以其HOOPS SDK工具包&#xff0c;为软件开发人员提供了强大的支持。这一工具包不仅支持Windows、Linux、OSX和移动平台等多样化的操作系统&#xff0c;还使得开发人员能够构建出庞大而复杂的建筑和BIM应用程序。HOOPS SDK的多格式…

现在的Android程序员为什么会感到焦虑?焦虑的源头在哪里?该怎么去缓解焦虑呢?——没有无中生有的贩卖焦虑,只有你的挣扎和不甘。

二、知识为何产生焦虑 先说两个世界&#xff0c;知识的世界和现实的世界。 知识的世界&#xff0c;由承载知识的那些载体组成&#xff0c;比如图书、音视频、报刊、自媒体等。 现实的世界&#xff0c;就是我们每天生活的、做出各种行为的世界。 学习的目的是什么呢&#xff1…