pandas处理天气数据

2024-06-23 19:20
文章标签 数据 处理 pandas 天气

本文主要是介绍pandas处理天气数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目分析

一、题目要求

  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 dtdf = 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 = 0res = ""while i < len(tem_str):if i + 1 < len(tem_str) and tem_str[i + 1] == '-' and tem_str[i] == '-':res += '-'i += 2elif tem_str[i] == '-':res += '-'i += 1elif tem_str[i].isdigit():res += tem_str[i]i += 1else:i += 1return 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 = idxbreakwind_level = wind_str[level_index:]return win_direct, wind_levelexcept 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)

这篇关于pandas处理天气数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088054

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

Java堆转储文件之1.6G大文件处理完整指南

《Java堆转储文件之1.6G大文件处理完整指南》堆转储文件是优化、分析内存消耗的重要工具,:本文主要介绍Java堆转储文件之1.6G大文件处理的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言文件为什么这么大?如何处理这个文件?分析文件内容(推荐)删除文件(如果不需要)查看错误来源如何避