python数据分析-Matplotlib绘图实例以及金融数据分析应用

通过学习扩展库matplotlib及背后的理论知识进行数据分析和可视化,重点以案例分析为主,通过实际案例演示相关理论和Python语言的应用。

读取文件countries-aggregated.csv数据,其中'Date':日期, 'Country':国家, 'Confirmed'、 'Recovered'、 'Deaths':当日累计确诊、康复、死亡人数,完成以下任务

  1. 查询中国、美国(US)的累计确诊人数,并画出折线图。
  2. 新增一列每日新增数量,并画出箱线图
  3. 查询2020/5/4日确诊病例在1万以上的国家中死亡率(死亡人数/确诊人数)排名前十的国家,并画出柱状图。
  4. 画出2020/5/4日中国、美国(US)、英国(United Kingdom)当日累计确诊人数、康复人数、死亡人数的饼图,设置为子图形式。
import pandas as pd
import matplotlib.pyplot as plt# 读取数据
df = pd.read_csv('countries-aggregated.csv')

# (1)查询中国、美国(US)的累计确诊人数,并画出折线图 

china_us_confirmed = df[df['Country'].isin(['China', 'US'])][['Date', 'Country', 'Confirmed']]
china_us_confirmed_pivot = china_us_confirmed.pivot(index='Date', columns='Country', values='Confirmed')plt.figure(figsize=(10, 6))
china_us_confirmed_pivot.plot()
plt.title('Cumulative Confirmed Cases in China and US')
plt.xlabel('Date')
plt.ylabel('Confirmed Cases')
plt.legend(title='Country')
plt.grid(True)
plt.show()

(2)新增一列每日新增数量,并画出箱线图

plt.figure(figsize=(10, 6))
df.boxplot(column='Daily New Cases', by='Country', grid=False, rot=90)
plt.title('Box Plot of Daily New Cases by Country')
plt.suptitle('')
plt.xlabel('Country')
plt.ylabel('Daily New Cases')
plt.show()

(3)查询2020/5/4日确诊病例在1万以上的国家中死亡率(死亡人数/确诊人数)排名前十的国家

data_2020_05_04 = df[df['Date'] == '2020-05-04']
data_2020_05_04 = data_2020_05_04[data_2020_05_04['Confirmed'] > 10000]
data_2020_05_04['Death Rate'] = data_2020_05_04['Deaths'] / data_2020_05_04['Confirmed']
top_10_death_rate = data_2020_05_04.nlargest(10, 'Death Rate')[['Country', 'Death Rate']]plt.figure(figsize=(10, 6))
plt.bar(top_10_death_rate['Country'], top_10_death_rate['Death Rate'])
plt.title('Top 10 Countries by Death Rate on 2020-05-04')
plt.xlabel('Country')
plt.ylabel('Death Rate')
plt.xticks(rotation=45)
plt.show()

(4)画出2020/5/4日中国、美国(US)、英国(United Kingdom)当日累计确诊人数、康复人数、死亡人数的饼图

data_2020_05_04_selected = data_2020_05_04[data_2020_05_04['Country'].isin(['China', 'US', 'United Kingdom'])]fig, axes = plt.subplots(1, 3, figsize=(18, 6))for ax, country in zip(axes, data_2020_05_04_selected['Country']):country_data = data_2020_05_04_selected[data_2020_05_04_selected['Country'] == country]sizes = [country_data['Confirmed'].values[0], country_data['Recovered'].values[0], country_data['Deaths'].values[0]]labels = ['Confirmed', 'Recovered', 'Deaths']ax.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140)ax.set_title(f'{country} Cases on 2020-05-04')plt.show()

继续使用函数绘制

(1)找出100年中的元旦节

# 生成100年的时间序列
dates = pd.Series(pd.date_range('1924-01-01', '2024-12-31'))# (1)找出100年中的元旦节
new_years_days = dates[(dates.dt.month == 1) & (dates.dt.day == 1)]
new_years_days

(2)计算出元旦节分别为星期一到星期日的天数

new_years_days_weekday_counts = new_years_days.dt.day_name().value_counts().sort_index()# 打印元旦节分别为星期一到星期日的天数
print("元旦节分别为星期一到星期日的天数:")
print(new_years_days_weekday_counts)

(3)绘制元旦节分别为星期一到星期日的天数数量的柱状图

plt.title('Count of New Year\'s Days from Monday to Sunday (1924-2024)')
plt.xlabel('Day of the Week')
plt.ylabel('Count')
plt.xticks(rotation=45)
plt.grid(True)
plt.show()

本次实验涉及多个数据分析任务,从数据读取、基本信息查询到复杂的条件筛选和可视化展示,我们全面实践了数据分析的各个环节。在处理疫情数据时,我们学会了如何提取关键数据并使用适当的可视化工具呈现分析结果,使得复杂的数据变得直观易懂。在时间序列分析中,我们掌握了如何生成和分析长时间跨度的数据,并从中提取有意义的信息。整体而言,本次实验不仅提高了我们的数据处理和分析能力,还增强了我们在实际问题中应用这些技能的信心,为将来应对更复杂的数据分析任务打下了坚实的基础。 

Matplotlib绘图融合金融数据分析应用,本文选择sh.600171数据
(1)筛选出收盘价高于开盘价的交易日期。
(2)绘制日K线图。
(3)比较该股票收益率(对数收益率和简单收益率均可,二选一)和沪深300指数收益率,并绘制对应图形。

data_list = []
while (rs.error_code == '0') & rs.next():# 获取一条记录,将记录合并在一起data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)#### 结果集输出到csv文件 ####   
result.to_csv("history_A_stock_k_data.csv", index=False)
print(result)#### 登出系统 ####
bs.logout()
df_filtered = df[df['close'] > df['open']]
print(df_filtered)

筛选收盘价高于开盘价的交易日期

df_filtered = df[df['close'] > df['open']]
print(df_filtered)

绘制日K线图

from matplotlib.ticker import MaxNLocator
df['date_num'] = df['date'].map(mdates.date2num)
ohlc = df[['date_num', 'open', 'high', 'low', 'close']]fig, ax = plt.subplots(figsize=(10, 6))for idx, row in ohlc.iterrows():color = 'green' if row['close'] >= row['open'] else 'red'ax.plot([row['date_num'], row['date_num']], [row['low'], row['high']], color='black')ax.add_patch(plt.Rectangle((row['date_num'] - 0.2, row['open']), 0.4, row['close'] - row['open'], edgecolor=color, facecolor=color, linewidth=1.0))ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
ax.xaxis.set_major_locator(MaxNLocator(10))
plt.xticks(rotation=45)
plt.title('日K线图')
plt.xlabel('日期')
plt.ylabel('价格')
plt.grid(True)
plt.show()

继续使用函数绘制

 

# 绘图
plt.figure(figsize=(10, 6))
plt.plot(df['Year'], df['China'], marker='o', linestyle='-', color='b', label='中国')
plt.plot(df['Year'], df['USA'], marker='o', linestyle='-', color='r', label='美国')plt.title('2000-2022年通货膨胀率(按消费者价格指数衡量)')
plt.xlabel('年份')
plt.ylabel('通货膨胀率')
plt.xticks(range(2000, 2023, 2))
plt.grid(True)
plt.legend()
plt.tight_layout()plt.show()

 

在本次实验中,我们选择了一家上市公司,获取了其2024年1月1日至今的日线股票价格数据,并完成了多个分析任务。通过这些任务,我们熟练掌握了金融数据的处理与可视化技巧。

首先,我们筛选出收盘价高于开盘价的交易日期。这一过程帮助我们识别出股票价格在一天内上涨的交易日,并理解了如何从大规模的时间序列数据中提取特定条件下的子集。这一步骤也展示了数据过滤和条件筛选的重要性,特别是在金融数据分析中。

最后,我们绘制了该股票的日K线图。通过K线图,我们能够直观地展示股票价格的开盘价、收盘价、最高价和最低价,并观察到股票价格的波动趋势。K线图作为一种常用的金融数据可视化工具,不仅提供了全面的价格信息,还帮助我们进行技术分析,识别市场趋势和价格模式。

通过本次实验,我们深入实践了金融数据和经济数据的处理与分析,掌握了多种数据处理和可视化技巧。在股票数据分析中,我们学习了如何筛选特定条件下的交易日、绘制日K线图以及计算和比较收益率。这些技能在实际金融分析中具有重要应用价值。在通货膨胀率数据分析中,我们通过数据整理和折线图绘制,直观展示和比较了中国和美国的通胀趋势。这一过程不仅增强了我们对经济数据分析的理解,也提升了我们的数据可视化能力。总体而言,本次实验提高了我们在数据处理、分析和可视化方面的综合能力,为将来从事更复杂的数据分析工作奠定了坚实的基础。

 数据和完整代码

创作不易,希望大家多点赞关注评论!!!

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

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

相关文章

‘AndroidStudio工具平台’尝试运行‘Android原生项目’

AndroidStudio工具平台 (内嵌Intelli IDEA集成环境) /Users/haijunyan/Library/Android/sdk 配置环境变量: #adb命令,安装APK查看连接设备 platform-tools #emulator命令,通过命令创建模拟器 tools #用NDK框架搭建的项目,用到下面的命令编译 ndk-bundle 等等 //查看当前设备…

Linux iptables详解

前言:事情是这样的。最近部门在进行故障演练,攻方同学利用iptables制造了一个故障。演练最终肯定是取得了理想的效果,即业务同学在规定时间内定位了问题并恢复了业务(ps:你懂得)。 对我个人来讲一直知道iptables的存储&#xff0…

pyqt opengl 小黑块

目录 OpenGLWidget_g初始化函数: 解决方法:把初始化函数的parent去掉 pyqt opengl 小黑块 原因: 创建OpenGLWidget_g的时候把main_window作为父类(self)传进去了, self.opengl_widget OpenGLWidget_g(…

Java面向对象-方法的重写、super

Java面向对象-方法的重写、super 一、方法的重写二、super关键字1、super可以省略2、super不可以省略3、super修饰构造器4、继承条件下构造方法的执行过程 一、方法的重写 1、发生在子类和父类中,当子类对父类提供的方法不满意的时候,要对父类的方法进行…

已解决Error || KeyError: ‘The truth value of a Series is ambiguous‘

已解决Error || KeyError: ‘The truth value of a Series is ambiguous’ 🚀 原创作者: 猫头虎 作者微信号: Libin9iOak 作者公众号: 猫头虎技术团队 更新日期: 2024年6月6日 博主猫头虎的技术世界 &#x1f3…

设计模式 —— 观察者模式

设计模式 —— 观察者模式 什么是观察者模式观察者模式定义观察者模式的角色观察者模式的使用场景观察者模式的实现 被观察者(Subject)观察者(Observer)通知(notify)更新显示(update&#xff09…

C++ BFS相关题目

目录 图像渲染 岛屿数量 图像渲染 733. 图像渲染 vis就是标记1有没有被用过 符合条件的都放到队列里,每次出队列一个,判四个, 如果要改的值与当前的值相同直接返回 注意:image[x][y] prev要放在坐标判断的后面&#xff…

我的mybatis学习笔记之二

第一版学习笔记 1,接口是编程: 原生: Dao > DaoImpl mybatis: Mappper > XXXMapper.xml 2,SqlSession代表和数据库的一次会话:用完必须关闭 3,SqlSession和connection一样是非线程安全的.每次使用都必须去获取新的对象 4,mapper接口没有是一类,但是mybtis会为这个接口生…

Linux启动KKfileview文件在线浏览时报错:启动office组件失败,请检查office组件是否可用

目录 1、导论 2、报错信息 3、问题分析 4、解决方法 4.1、下载 4.2、安装步骤 1、导论 今天进行项目部署时,遇到了一个问题。在启动kkfileview时,出现了报错异常: 2024-06-09 06:36:44.765 ERROR 1 --- [ main] cn.keking.service.Of…

运维小妙招:如何让系统信息随登录自动展现?

在日常运维工作中,及时获取系统的基本信息对于维护系统的稳定性和安全性至关重要。通过一个简单的登录脚本,我们可以在用户每次登录时自动显示系统的关键信息,这不仅提高了工作效率,还能快速定位问题。本文将介绍如何编写这样一个…

写给大数据开发的,要给领导汇报什么?

上篇:写给大数据开发,如何去掌握数据分析 就像说经济学家不炒股一样,有些数据开发不喜欢讲数据📊,就很离谱…自己不讲数据,不相信数据,别人也不敢用了~ 所以找上级汇报&#xff0…

KUKA机器人KRC5控制柜面板LED显示

对于KUKA机器人新系列控制柜KRC5控制柜来说,其控制柜面板LED布局如下图: 其中①②③④分别为: 1、机器人控制柜处于不同状态时,LED显示如下: 2、机器人控制柜正在运行时: 3、机器人控制柜运行时出现的故障…

C# BindingSource 未完BindingNavigator

数据绑定导航事件数据验证自定义示例示例总结 在 C#中, BindingSource 是一个非常有用的控件,它提供了数据绑定的基础设施。 BindingSource 允许开发者将数据源(如数据库、集合、对象等)与用户界面控件(如文本框、下…

01、Linux网络设置

目录 1.1 查看及测试网络 1.1.1 查看网络配置 1、查看网络接口地址 2、查看主机状态 3、查看路由表条目 4、查看网络连接qing 1.1.2 测试网络连接 1.测试网络连接 2.跟踪数据包的路由路径 3.测试DNS域名解析 1.2 设置网络地址参数 1.2.1 使用网络配置命令 1.修改网卡…

在Linux or Windows中如何优雅的写出对拍

在Linux or Windows中如何优雅的写出对拍 一、前言二、结论1、对拍 三、对拍详解1、什么是对拍呢?🧐2、对拍的组成部分3、输入数据生成4、对拍程序5、操作流程 四、最后 一、前言 网上的对拍程序层出不穷,大多Linux和Windows中的对拍程序都是…

MySQL 函数与约束

MySQL 函数与约束 文章目录 MySQL 函数与约束1 函数1.1 字符串函数1.2 数值函数1.3 日期函数1.4 流程函数 2 约束2.1 概述2.2 约束演示2.3 外键约束2.4 删除/更新行为 1 函数 函数是指一段可以直接被另一程序调用的程序或代码。 1.1 字符串函数 MySQL中内置了很多字符串函数&…

通用信息提取数据预处理

train_data./datasets/duuie output_folder./datasets/duuie_pre ignore_datasets["DUEE", "DUEE_FIN_LITE"] schema_folder./datasets/seen_schema # 对CCKS2022 竞赛数据进行预处理 import shutil # shutil.copytree(train_data,output_folder) impor…

项目:基于httplib/消息队列负载均衡式在线OJ

文章目录 写在前面关于组件开源仓库和项目上线其他文档说明项目亮点 使用技术和环境项目宏观结构模块实现compiler模块runner模块compile_run模块compile_server模块 基于MVC结构的OJ服务什么是MVC?用户请求服务路由功能Model模块view模块Control模块 写在前面 关于…

linux安装jdk + docker+dockercompose+aliyunACR

下载安装包 链接:https://pan.baidu.com/s/1AyFvPA5qwy4IxfZoTQohrQ 提取码:6666 安装jdk jdk-8u411-linux-x64.tar.gz 链接:https://pan.baidu.com/s/1BZ7J4L5PY-9nuQyxBMDGTA 提取码:6666 1、解压jdk tar -xvf jdk-8u411-li…

如何克隆笔记本电脑上的硬盘?

笔记本电脑的信息存储在硬盘上,一旦硬盘发生故障,数据很容易丢失。克隆技术使我们能够将一个硬盘上的数据精确复制到另一个硬盘上,然后将其用作备份。此外,如果我们决定升级到更大容量或固态硬盘,克隆技术还允许我们将…