本文作者:邓奕 中南财经政法大学统计与数学学院
本文编辑:梁莹
本文主编:兰博文
Stata and Python 数据分析
爬虫俱乐部Stata数据处理与实证研究实战、Python基础编程与文本分析进阶课程可在小鹅通平台查看,欢迎大家多多支持订阅!如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~



我们以武汉市2024年逐日气象观测数据为例进行示范。
数据来源:美国国家海洋和大气管理局(NOAA)全球历史气候网络日值数据集。
数据范围:2024年1月1日-2024年12月31日。
原始指标:温度、最高温度、最低温度、湿度、降水量等核心气象要素。

import pandas as pdimport numpy as np# 读取数据df = pd.read_csv('D:/日常文件/stata与python/武汉2024年逐日气象数据.csv')
df.replace({999.9: np.nan, 9999.9: np.nan, 99.99: np.nan}, inplace=True)print(df_clean.isnull().sum())numeric_cols = ['温度(℃)', '最高温度(℃)', '最低温度(℃)', '湿度(%)','风速(m/s)', '气压(hpa)', '能见度(km)', '降水量(mm)']df[numeric_cols] = df[numeric_cols].interpolate(method='linear', limit_direction='both')
print(df[numeric_cols].isnull().sum())df_clean['日期'] = pd.to_datetime(df_clean['日期'])print(df.head())

特征工程是机器学习和大数据分析中的关键步骤,其目的是从原始数据中提取更有信息量的特征,从而提高模型的性能和可解释性。同时,特征工程可以降低计算成本,去除冗余或无关的特征,减少数据维度。
在气候数据分析中,特征工程也尤为重要。比如原始气象数据只能反映表面现象,但通过特征工程可以实现从天气尺度到气候尺度的跨尺度分析,进一步挖掘深层气候规律。其次,精心设计的特征可以使可视化图表更加直观。
因此,我们提取了基本的年月日信息,还创建了高温日数、低温日数、暴雨日数等衍生特征:
# 时间维度特征df['年份'] = df['日期'].dt.yeardf['月份'] = df['日期'].dt.monthdf['季度'] = df['日期'].dt.quarterdf['星期'] = df['日期'].dt.dayofweek# 季节分类def get_season(month):if month in [3, 4, 5]:return '春季'elif month in [6, 7, 8]:return '夏季'elif month in [9, 10, 11]:return '秋季'else:return '冬季'df['季节'] = df['月份'].apply(get_season)# 天气现象标记df['是否降水日'] = (df['降水量(mm)'] > 0.1).astype(int)df['是否高温日'] = (df['最高温度(℃)'] >= 35).astype(int)df['是否低温日'] = (df['最低温度(℃)'] <= 0).astype(int)df['是否暴雨日'] = (df['降水量(mm)'] >= 50).astype(int)# 季节极端天气统计seasonal_extremes = df.groupby(['年份', '季节']).agg({'是否高温日': 'sum','是否低温日': 'sum','是否暴雨日': 'sum',}).reset_index()seasonal_extremes.columns = ['年份', '季节', '高温日数', '低温日数', '暴雨日数']
# 月度聚合数据monthly_data = df.groupby(['年份', '月份']).agg({'温度(℃)': ['mean', 'max', 'min', 'std'],'最高温度(℃)': 'max','最低温度(℃)': 'min','降水量(mm)': 'sum','湿度(%)': 'mean','风速(m/s)': 'mean','是否降水日': 'sum','是否高温日': 'sum'}).round(2)# 扁平化列名monthly_data.columns = ['月均温', '月最高温', '月最低温', '温度标准差','月极端高温', '月极端低温', '月总降水', '月均湿度','月均风速', '降水日数', '高温日数']monthly_data = monthly_data.reset_index()# 季节聚合数据seasonal_data = df.groupby(['年份', '季节']).agg({'温度(℃)': 'mean','最高温度(℃)': 'max','最低温度(℃)': 'min','降水量(mm)': 'sum','湿度(%)': 'mean'}).round(2)seasonal_data.columns = ['季节均温', '季节最高温', '季节最低温', '季节总降水', '季节均湿']seasonal_data = seasonal_data.reset_index()
# 导出日度详细数据df.to_csv('武汉2024气候数据_日度详细.csv', index=False, encoding='utf-8-sig')# 导出月度聚合数据monthly_data.to_csv('武汉2024气候数据_月度统计.csv', index=False, encoding='utf-8-sig')# 导出季节数据seasonal_data.to_csv('武汉2024气候数据_季节统计.csv', index=False, encoding='utf-8-sig')# 导出季节极端天气数据seasonal_extremes.to_csv('武汉2024极端天气季节统计.csv', index=False, encoding='utf-8-sig')

本文以“季节温度降水分布图”为例讲解在Tableau中的绘制流程:
1.打开Tableau,点击“文本数据”后选择我们要分析的季节数据

2.把“季节”拖入列标签
3.把“季节总降水”“季节均温”拖入行标签,二者的标记类型分别设置为“条形图”和“线”,二者都设置为平均值度量
4.把“季节总降水”拖入左边标记卡的“颜色”中,这样就可以实现不同的颜色设置,这里我们随机选择一个颜色搭配
5.点击左边标记卡中“季节均温”,把颜色设置为蓝色
6.右击标题“季节温度降水分布”,选择“设置标题格式”,在标题的“阴影”设置中选择底色

利用Python处理后的数据集,我们在Tableau绘制了温度变化趋势图、降水日历热力图、月度温度降水分布图、季节温度降水分布图、月度湿度统计图、月度风速统计图和季节极端天气统计图。最终的Tableau仪表板可视化效果展示如下:


声明:代码仅供学习使用,请勿用做任何商业行为!
重磅福利!为了更好地服务各位同学的研究,爬虫俱乐部将在小鹅通平台上持续提供金融研究所需要的各类指标,包括上市公司十大股东、股价崩盘、投资效率、融资约束、企业避税、分析师跟踪、净资产收益率、资产回报率、国际四大审计、托宾Q值、第一大股东持股比例、账面市值比、沪深A股上市公司研究常用控制变量等一系列深加工数据,基于各交易所信息披露的数据利用Stata在实现数据实时更新的同时还将不断上线更多的数据指标。我们以最前沿的数据处理技术、最好的服务质量、最大的诚意望能助力大家的研究工作!相关数据链接,请大家访问:(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或扫描二维码:
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐 Stata | 从字节串到Unicode:Stata ustrfrom使用手册
Seminar|CEO言行不一,审计师如何“明察秋毫”?——一项关于诚信、审计与公司治理的深度研究
《赌神》 里的发哥能赢赌场?蒙特卡洛模拟:现实里“赌神”赢不了这5.26%”
Python | 别让Emoji毁了你的模型!Python机器学习中的Emoji “神翻译”指南 Stata爬虫——我的数据去哪里了?
python爬虫 | 获取港股基本信息
Stata入门:tempvar命令与tempfile命令详解
Python绘图:用matplotlib库绘制好看的折线图
Seminar | 注意力独特性与企业绩效:增长行动的中介作用
Stata | 从sum2docx到reg2docx——基于《中国工业经济》期刊文章的结果输出 Seminar | 邻避效应:内在动机与企业污染治理
Stata爬取豆瓣读书,一键获取你的读书清单
Seminar | 自动化对企业报告质量的影响
识别处理重复值duplicates命令
Pandas 数据筛选的多种方法
Python交互可视化实战:构建动态数据仪表盘 Stata查看变量信息的三个常用命令 我用 Mermaid 画了《甄嬛传》角色关系图,结果…… 爬虫俱乐部暑期Stata&Python编程训练营圆满结束! Stata入门:twoway命令—分析可视化 用Bokeh搞定大型数据集流式可视化,超实用! 关于我们 微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
我们团队一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:1)必须原创,禁止抄袭;2)必须准确,详细,有例子,有截图;注意事项:1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。 2)邮件请注明投稿,邮件名称为“投稿+推文名称”。3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。