基于 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 的操作. 还会接触到更多关于可视化图形, 数据的输入输出形式, 初中级的数据分析和操作, 合并与组合数据等.

后面会持续更新, 有任何问题或者错误, 欢迎留言, 希望和大家交流学习.

基于 Python 和 Pandas 的数据分析(1)的更多相关文章

  1. 基于 Python 和 Pandas 的数据分析(4) --- 建立数据集

    这一节我想对使用 Python 和 Pandas 的数据分析做一些扩展. 假设我们是亿万富翁, 我们会想要多元化地进行投资, 比如股票, 分红, 金融市场等, 那么现在我们要聚焦房地产市场, 做一些这 ...

  2. 基于 Python 和 Pandas 的数据分析(2) --- Pandas 基础

    在这个用 Python 和 Pandas 实现数据分析的教程中, 我们将明确一些 Pandas 基础知识. 加载到 Pandas Dataframe 的数据形式可以很多, 但是通常需要能形成行和列的数 ...

  3. 基于 Python 和 Pandas 的数据分析(7) --- Pickling

    上一节我们介绍了几种合并数据的方法. 这一节, 我们将重新开始不动产的例子. 在第四节中我们写了如下代码: import Quandl import pandas as pd fiddy_states ...

  4. 基于 Python 和 Pandas 的数据分析(3) --- 输入/输出 基础

    这一节, 我们要讨论 Pandas 的输入与输出, 并且应用在现实的实际例子中. 为了得到大量的数据, 向大家推荐一个网站 Quandl. Quandl 有很多免费和付费的资源. 这个网站最大的优势在 ...

  5. 基于 Python 和 Pandas 的数据分析(6) --- Joining and Merging

    这一节我们将看一下如何通过 join 和 merge 来合并 dataframe. import pandas as pd df1 = pd.DataFrame({'HPI':[80,85,88,85 ...

  6. 基于 Python 和 Pandas 的数据分析(5) --- Concatenating and Appending

    这一节我们将会介绍几种不同的合并数据的方法. 在我们这个不动产投资的例子中, 我们希望获取 51 个州的房产数据, 并把它们组合起来. 我们这样做有很多原因. 这样做既便于我们做分析, 同时也可以占用 ...

  7. python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言)

    python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言) 感觉要总结总结了,希望这次能写个系列文章分享分享心得,和大神们交流交流,提升提升. 因为 ...

  8. 万字长文,Python数据分析实战,使用Pandas进行数据分析

    文章目录 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人,我给大家 ...

  9. 基于python 信用卡评分系统 的数据分析

    基于python 信用卡评分系统 的数据分析 import pandas as pd import matplotlib.pyplot as plt #导入图像库 from sklearn.ensem ...

随机推荐

  1. bzoj4358 premu

    题目链接 莫队算法 没有用线段树,而是看了showson的并查集%%% #include<algorithm> #include<iostream> #include<c ...

  2. flask框架----设置配置文件的几种方式

    设置配置文件的几种方式 ==========方式一:============ app.config['SESSION_COOKIE_NAME'] = 'session_lvning' #这种方式要把所 ...

  3. IP代理(proxies参数)

    在爬虫的过程中,我们经常会遇见很多网站采取了防爬取技术,或者说因为自己采集网站信息的强度和采集速度太大,给对方服务器带去了太多的压力. 如果你一直用同一个代理ip爬取这个网页,很有可能ip会被禁止访问 ...

  4. Spring Advice

    Spring AOP(面向方面编程)框架,用于在模块化方面的横切关注点.简单得说,它只是一个拦截器拦截一些过程,例如,当一个方法执行,Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后 ...

  5. USB开发库STSW-STM32121文件分析(转)

    源: USB开发库STSW-STM32121文件分析

  6. RTSP 与 RTMP 协议 (转)

    源: RTMP协议与RTSP协议比较 RTSP 与 RTMP 协议 RTSP Spec中文版(1-11) RTSP协议 流媒体之rtsp篇 H264视频传输.编解码----RTSP协议

  7. 2016 icpc ECfinal && codeforcesgym101194

    一不小心惨变旅游队,不过上海的风景不错 顺带找其他队交流一下集训经验...或许可以成为选拔和集训16级的依据 A.直接模3就可以了,2^(3*n)%7=1 C.Mr. Panda and Strips ...

  8. [error] 2230#2230: *84 client intended to send too large body: 1711341 bytes

    centos7 lnmp部署知乎上传主体报错 2019/01/17 18:55:27 [error] 2230#2230: *89 open() "/code/wordpress/favic ...

  9. django基础 -- 6. 多表操作

    一.多表的创建 from django.db import models # Create your models here. class Author(models.Model): id = mod ...

  10. Class DesiredCapabilities

    public class DesiredCapabilities extends java.lang.Object implements java.io.Serializable, Capabilit ...