如何用Python处理金融数据?

如何用Python处理金融数据?

本文用亚马逊的股票数据(Amazon Stock Data)进行简单的操作实践,用python处理金融数据,为初学者提供完整版指南。

在这篇文章中,我将引导你们完成一些很有意义的操作实践,这些演练将帮助了解如何使用 Python 处理金融数据。如果你想了解更多数据分析相关内容,可以阅读以下这些文章:
快收藏!2021 Python常用函数都在这里
如何在Pandas里写SQL查询语句?
如何用Pandas 三步清洗数据?
一文上手用Pandas给数据加标签

首先,我将向你们介绍我们的朋友 Python,然后我们将进入一个非常有趣的部分,即编程(Programming)。正如刚刚提到的,我们将使用亚马逊股票数据(Amazon Stock Data)。如果你想免费获取这些股票数据,可在纳斯达克(NASDAQ)官网获取。纳斯达克—美国证券交易商自动报价系统协会(National Association of Securities Dealers Automated Quotations)是一个电子证券交易所,旗下拥有 3,300 多家公司。

你可以在这里下载亚马逊股票数据。在这个网站上,你可以找到不同公司的股票数据,通过数据集练习你的技能。让我们开始吧!

目录:

  • Python
  • 了解亚马逊股票数据(Amazon Stock Data)
  • 数据清理(Data Cleaning)
  • 数据可视化(Data Visualization)

Python

Python 是一种通用编程语言,在分析数据方面变得越来越受欢迎。通过Python,你的工作效率会越来越高,能更加有效地集成系统;世界各地的公司都在用 Python 从数据中收集知识。如果你想了解更多信息,可以访问 Python 官方页面。

了解数据

当你第一次加载数据至数据帧中时,在开始操作之前,你需要查看这些数据。这有助于了解数据是否正确,同时对数据提前有一些了解。如前所述,在本操作实践中,我们将使用来自纳斯达克(NASDAQ)的历史数据。我认为亚马逊会是一个不错的选择。与我一起完成此操作实践后,你将学会一些技能,掌握这些技能之后,你就能够使用不同的数据集进行练习。

我们使用的数据帧包含2020 年 6 月 24 日至 7 月 23 日亚马逊股票的收盘价(Closing Prices)

读取数据

import pandas as pd 
amzn = pd.read_csv('amzn_data.csv')

Head函数(Head Method)

为了了解数据,我们首先要使用 Head函数。当你在数据帧上使用 Head函数时,会显示出数据帧的前五行信息。运行此方法后,我们还可以看到,数据是按日期索引排序的。

amzn.head()
结果

Tail命令(Tail Method)

还有一个方法也非常有用,那就是Tail命令。通过使用Tail命令,可以显示数据帧的最后五行信息。假设你想查看最后三行,你可以在括号之间输入整数值 3 。

amzn.tail()
结果

描述函数(Describe Method)

在深入了解数据之前,我们最后用的一个方法是描述函数。描述函数可用于数据统计相关总结。默认情况下,描述函数会返回所有数字列的汇总统计信息,如,在我们的示例中,所有列中的信息都是数字。摘要将包括以下内容:行数、平均值、标准偏差、最小值和最大值,最后是百分位数。

amzn.describe()
描述法

为什么我们只获取了 Volume 列的值而没有其他列?这就是我们所说的数据准备(Data Preparation)。清理数据,准备进行分析,这也是最重要的一步。在进行下一步之前,我们必须了解一些注意事项。

数据清理

我们之前提到过使用描述函数(Describe Method)是专门处理数值的,意味着只有Volume 这列是数值。我们可以查看一下列的数据类型。

amzn.dtypes
列的数据类型

如上所示,只有Volume 列是整数类型(Interger Type),其余是对象类型(Object Type)。所以,我们必须注意数据类型。但是在转换数据类型之前,我们需要清除美元符号,否则当程序指令将美元符号转换为数值时,会出现错误。

amzn = amzn.replace({'\$':''}, regex = True) amzn.head()
清除美元符号之后的页面

好的,现在我们可以转换数据类型了。我们不需要对 Date 和 Volume 列进行任何更改。我们要将其余列转换为数值,在本练习中,我们可以使用浮点数值类型(Float Numeric Type)

# Renaming column names and converting the data types
df = amzn 
df.columns = ['Date', 'Close', 'Volume', 'Open', 'High', 'Low'] 
# Converting data types
df = df.astype({"Close": float, "Volume": int, "Open": float, "High": float, "Low": float}) 
df.dtypes
操作之后的数据类型

太好了,我们成功解决了数据类型的问题。现在,我们可以尝试运行描述函数(Describe Method),看看这种方法是如何运作的。

df.describe()
结果

非常棒!现在,正如上图所示,描述函数(Describe Method)与我们所有的数字列配合地非常完美。我们还可以通过使用不同的参数来自定义描述法的结果。我们在此练习中将用到describe的三个参数:include、percentiles 以及 exclude。

df.describe(include = "float")

结果
df.describe(include = "object")
结果
df.describe(exclude = "int")
结果
结果

过滤数据

运算符

  • <
  • >
  • <=
  • >=
  • ==
  • !=

我们将使用这些运算符,用来比较特定的值与列中的值。结果将出现一串布尔值(Booleans):也就是True 和 Falses。如果比较是正确的,则为True,如果比较是不正确的,则为False。

通过收盘价过滤

如果我们使用 loc[] 运算符将一串布尔值(Booleans)传递给数据帧时,将返回仅为 True 值的新数据帧。

# Closing price more than 3000
mask_closeprice = df.Close > 3000 
high_price = df.loc[mask_closeprice] 
high_price.head()
结果

Pandas 通过运算符将布尔值(Booleans)的不同比较结果组合在一起。这些运算符是:And、Or、Not。我们可以使用这些运算符来创建更复杂的条件。例如,假设我们想看到AMZN股票数据收盘价(Closing Price)超过3000,同时成交量超过500万。我们可以通过以下擦做实现:

# Closing price more than 3000 and traded volume more than 5
mask_closeprice = df.Close > 3000 
mask_volume = df.Volume > 5000000
millionhigh_price_volume = df.loc[mask_closeprice & mask_volume]
 
high_price_volume.head()
结果

数据可视化(Data Visualization)

数据可视化是理解数据的重要步骤。它不仅可以帮助我们看到多行值,还可以让我们更好地了解数据。我们还可以通过数据可视化比较不同的数据值。

数据可视化还非常适合了解和查看不同列之间的关系。

Matplotlib

最常用的二维(2D)绘图库就是 Matplotlib。这个库非常强大,有它的学习曲线。通过Matplotlib的学习曲线,其他库也构建在这基础之上。

下面,我们来绘制这个月的股票价格。x 轴是日期,y 轴将是每天的收盘价。绘制出的线图将显示股票价格在一个月内的变化情况。从业务角度来说,这条线图叫做价格波动图,可以用于检测股票价格的季节性模式。

df.plot(x='Date', y='Close')
线图

旋转(Rotate)

Matplotib提供了许多有趣的参数,你可以自己尝试一下。其中之一就是旋转,可用于旋转图表的标签。下面这个例子中我们将日期标签旋转 90 度,以便于阅读。

df.plot(x='Date', y='Close', rot=90)
线图

标题(Title)

如果你想给你的图表一个标题,可以使用下列这种方法,将字符串传递给title 参数。

df.plot(x='Date', y='Close', rot=90, title="AMZN Stock Price")
线图

更多的图表类型

默认图表类型为线图(Line Plot),但在我们的例子中,还有许多其他图表类型可供使用,包括:

  • 线图(Line Plot)
  • 柱状图(Bar Plot)
  • 饼状图(Pie Plot)
  • 散点图(Scatter Plot)
  • 直方图(Histogram)

现在,我们以散点图(Scatter Plot)为例。我们可以在名为 kind 的方法中添加一个新参数。对的,就是这么简单。

df.plot(x='Date', y='Close', kind='scatter', rot=90, title="AMZN Stock Price")
散点图

现在,我们再以直方图(Histogram)为例。直方图非常适合用来查看值分布。

df.plot(x='Date', y='Volume', kind='hist', rot=90, title="AMZN Stock Price")
直方图

以上就是本文的全部内容。感谢你阅读这篇文章,希望你喜欢这篇文章并学到一些新的东西。如果你在运行代码时有任何问题,欢迎在评论区讨论留言。感谢阅读!你还可以订阅我们的YouTube频道,观看大量数据科学相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/

原文作者:Behic Guven
翻译作者:Lia
美工编辑:过儿
校对审稿:Jiawei Tong
原文链接:https://towardsdatascience.com/python-for-finance-the-complete-beginners-guide-764276d74cef