基于 Python 和 Pandas 的数据分析(1)
Pandas 是 Python 的一个模块(module), 我们将用 Python 完成接下来的数据分析的学习. Pandas 模块是一个高性能,高效率和高水平的数据分析库.
从本质上讲,它非常像操作电子表格的无头版本,如Excel. 我们所使用的大部分的数据集都可以被转换成 dataframes(数据框架). 你可能对这个术语比较熟悉了, 它被广泛地用于很多语言. 但是如果你不熟悉, 可以看下我的解释: 一个 dataframe 就很像是一个仅有行和列组成的电子表格. 现在开始, 我们可以使用 Pandas 以光速对数据集进行一系列的操作.
Pandas 也是可以与很多其他数据分析库兼容的, 比如用于机器学习的 Scikit-Learn, 用于图形绘制的 Matplotlib, NumPy 等. Pandas 的性能非常强大, 非常值得学习. 如果你在使用 excel 或者其他电子表格处理大量的计算任务, 那么通常需要1分钟或者1小时去完成某些工作, Pandas 将改变这一切.
另一个好消息, 你可以很容易地载入/输出 xls 或者 xlsx 格式的文件. 所以即使你的老板还是习惯以往的格式, 你也可以轻松应对. Pandas 还同时兼容很多文本文件, 如 csv, xml, html 等.
如果你是初次接触 Python 语言, 没有关系, 我相信你一样可以继续下面的课程, 而且这个教程甚至可以作为你 Python 的一个初步入门教程.
如果你还没有安装 Python, 直接去官网https://www.python.org/下载一个最新版本, 并安装.
这里我先假设你已经安装了 Python. 下一步, 打开终端执行
pip3 install pandas
pip3 install numpy
安装 Pyton 相关包的方式有很多, 通过 pip 是最简单的方式.
关于编辑器, 选择自己顺手的就行, 我用的是 visual Code.
下面就来通过一个简单的实操, 认识一下 dataframe.
首先, 做一些简单的引入:
import pandas as pd
import datetime
import pandas_datareader.data as web
这里, 我们使用了 "import pandas as pd". 这算是引入 Pandas 的通用用法. 接着, 我们引入 datetime, 我们会用这个包做一些关于时间的操作. 最后, 引入 "import pandas.io.data as web", 我们需要用这个从网上拉取数据.
start = datetime.datetime(2010, 1, 1)
end = datetime.datetime.now()
这里, 我们创建了 start 和 end 两个变量, 它们都是 datatime 的对象. 我们会拉取从2010年1月1日到今天的数据. 下面我们就来创建一个 dataframe:
df = web.DataReader("XOM", "yahoo", start, end)
这行代码实现了从 yahoo API 拉取 XOM 的数据, 并赋值给变量 df. 把存储dataframe 的变量命名为 df, 并不是强制的, 但是是一种通用的方式, 可以让人从命名快速识别出这是一个 dataframe 的变量, 而无需追踪代码.
所以现在我们就获得了一个 dataframe, 那么我们要如何查看它的内容呢? 对, 我们可以用 print() 函数:
print(df)
目前是要求打印所有的数据, 终端显示的时候会省略掉中间部分的数据, 但是即便这样, 数据量依然很大. 所以, 大家一般都习惯只输出前5行数据:
print(df.head())
输出:
High Low Open Close Volume Adj Close
Date
2009-12-31 68.860001 68.110001 68.839996 68.190002 18852300.0 51.152096
2010-01-04 69.260002 68.190002 68.720001 69.150002 27809100.0 51.872231
2010-01-05 69.449997 68.800003 69.190002 69.419998 30174700.0 52.074772
2010-01-06 70.599998 69.339996 69.449997 70.019997 35044700.0 52.524845
2010-01-07 70.059998 69.419998 69.900002 69.800003 27192100.0 52.359821
这样就输出了前5行数据, 这有助于 debug, 并且可以查看整体的数据结构.
以上就是我想带给大家的初步的入门介绍. 但是还有一件事: 数据可视化. 就像我前面提到的, Pandas 与很多其他的模块都有很好的兼容性, Matplotlib 就是其中一个. 大家可以在终端执行
pip3 install matplotlib
其实, 理论上装过 pandas, matplotlib 就应该已经自动安装了, 这里只是要大家再确认一下. 现在, 就可以在脚本的头部加上下面的代码:
import matplotlib.pyplot as plt
from matplotlib import style
style.use('fivethirtyeight')
Pyplot 是 matplotlib 基本的图形化模块. Style 帮助我们快速建立图表. 然后可以用 Style.use 来选择一种图形样式.
接下来, 我们可以这样做:
df['High'].plot()
plt.legend()
plt.show()
完整代码如下:
import pandas as pd
import datetime
from pandas_datareader import data as web
import matplotlib.pyplot as plt
from matplotlib import style
style.use('ggplot')
start = datetime.datetime(2010, 1, 1)
end = datetime.datetime(2015, 1, 1)
df = web.DataReader("XOM", "yahoo", start, end)
print(df.head())
df[['High']].plot()
plt.legend() #其实可以省略
plt.show()
很棒! 以上就是对 Pandas 一个简单快速的介绍. 在这个整个系列教程中, 我将会带到更多的Pandas 的基础知识, 还有一些对 dataframe 的操作. 还会接触到更多关于可视化图形, 数据的输入输出形式, 初中级的数据分析和操作, 合并与组合数据等.
后面会持续更新, 有任何问题或者错误, 欢迎留言, 希望和大家交流学习.