1.读取广-湛.csv文件
import pandas as pd data = pd.read_csv('广-湛天气.csv') data
2.去除多余字符
#去除多余字符 data[['最高温度','最低温度']] = data[['最高温度','最低温度']].apply(lambda x: x.str.replace('°','').replace('', '0')) data.head()
3.删除2023年数据,并计算平均温度保存到广湛csv文件中
# 删除包含 target_str 的行 data = data[~data['日期'].str.contains('2023-')] # 将最高温度和最低温度转换为数值型 data['最高温度'] = data['最高温度'].astype(float) data['最低温度'] = data['最低温度'].astype(float) # 计算平均温度 data['平均温度'] = (data['最高温度'] + data['最低温度']) / 2 # 保存结果 data.to_csv('广湛天气.csv', index=False)
4.读取新数据
#读取新数据 data = pd.read_csv('广湛天气.csv') data
5.分割日期与星期
#分割日期与星期 data[['日期','星期']] = data['日期'].str.split(' ',expand=True,n=1) data
6.判断是否下雨
#是否下雨 data.loc[data['天气'].str.contains('雨'),'下雨吗']='是' data.fillna('否',inplace=True) #分割日期时间 data['日期'] = pd.to_datetime(data['日期']) data[['最高温度','最低温度']] = data[['最高温度','最低温度']].astype('int') data['年份'] = data['日期'].dt.year data['月份'] = data['日期'].dt.month data['日'] = data['日期'].dt.day # 预览 data.sample(5)
7.# 按城市和天气分组,并计算每组的天数
# 按城市和天气分组,并计算每组的天数 grouped = data.groupby(['城市', '天气']).size().reset_index(name='天数') # 将结果按城市分为两个DataFrame gz_weather = grouped[grouped['城市'] == '广州'] zj_weather = grouped[grouped['城市'] == '湛江'] gz_weather
8.将原有的天气类型按照关键字划分,并存进新的 DataFrame 中
# 定义一个函数,将原有的天气类型按照关键字划分 def classify_weather(weather): if '多云' in weather: return '多云' elif '晴' in weather: return '晴' elif '阴' in weather: return '阴' elif '大雨' in weather: return '雨' elif '中雨' in weather: return '雨' elif '小雨' in weather: return '雨' elif '雷阵雨' in weather: return '雨' elif '雾' in weather: return '雾' else: return '其他' # 将原有的天气类型按照关键字划分,并存进新的 DataFrame 中 new_data = data[['城市', '天气']].copy() new_data['新天气'] = new_data['天气'].apply(classify_weather) new_data
9.#按照城市和新天气列进行分组,并计算每一种天气的天数
# 按照城市和新天气列进行分组,并计算每一种天气的天数 count_data = new_data.groupby(['城市', '新天气'])['天气'].count().reset_index() # 根据条件筛选出符合要求的行 df1 = count_data.loc[count_data['城市'] == '广州'] df2 = count_data.loc[count_data['城市'] == '湛江'] # 将“天气”列名改为“天数” df3 = df1.rename(columns={'天气': '天数'}) df4 = df2.rename(columns={'天气': '天数'}) # 输出结果 df3
df4
10.计算城市的每个月平均温度
# 筛选出平均温度等于最高温度和最低温度平均值的数据 data1 = data[(data['平均温度'] == (data['最高温度'] + data['最低温度']) / 2)] # 筛选出城市为A或B的数据 data_AB = data1[(data1['城市'] == '广州') | (data1['城市'] == '湛江')] # 将日期转换为月份并赋值给新的列 data_AB['月份'] = pd.to_datetime(data_AB['日期']).dt.month # 按照城市和月份分组,计算每组的平均气温 grouped_AB = data_AB.groupby(['城市', '月份'])['平均温度'].mean().reset_index() # 按照城市和月份排序 grouped_AB = grouped_AB.sort_values(['城市', '月份']) # 打印结果 grouped_AB