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

web_stats = {'Day':[1,2,3,4,5,6],
'Visitors':[43,34,65,56,29,76],
'Bounce Rate':[65,67,78,65,45,52]}

我们可以通过如下方式把这个 dictionary 转换成 dataframe:

import pandas as pd

web_stats = {'Day':[1,2,3,4,5,6],
'Visitors':[43,34,65,56,29,76],
'Bounce Rate':[65,67,78,65,45,52]} df = pd.DataFrame(web_stats)

正如上一节所讲的, 现在我们把 df 打印出来看一下它的数据结构:

print(df.head())

输出:

   Bounce Rate  Day  Visitors
0 65 1 43
1 67 2 34
2 78 3 65
3 65 4 56
4 45 5 29

此时, 你可能想要获取最后的几行数据, 可以这样做:

print(df.tail())

输出:

   Bounce Rate  Day  Visitors
1 67 2 34
2 78 3 65
3 65 4 56
4 45 5 29
5 52 6 76

你也可以指定要前几行或者后几行数据:

print(df.tail(2))
   Bounce Rate  Day  Visitors
4 45 5 29
5 52 6 76

正如你所看到的, 输出数据的左边总有一列 0,1,2,3,4,5 的数字. 我们把这些数字叫做"索引". 一个 dataframe 的索引体现了数据的关联关系和排序规则. 或者说, 你希望怎样呈现数据结构. 通常情况下, 这个索引应该是联系所有数据的变量. 在这个例子中, 我们还没有这样定义索引,当你没有明确索引的时候, Pandas 就会自动为你创建一个数字索引. 那么现在我们来看一下这个例子中的数据集, 你是否能看出哪个列的数据是跟所有其他列的数据都能产生关联关系的?

没错, 就是 "Day" 这个列! 通常情况下, 任何关于时间的数据, 都会被用作索引. 但是这并不是绝对的, 主要还是取决于你想怎样呈现数据, 甚至还可以定义多重索引(这个我们后面会介绍). 定义索引有很多方式. 这里我们将介绍两种, 第一种, 在现有的 dataframe 上, 可以这样设置索引:

df.set_index('Day', inplace=True)

输出:

        Bounce Rate  Visitors
Day
1 65 43
2 67 34
3 78 65
4 65 56
5 45 29

这里的变化是, 最左边的序列号消失了, "Day" 比其他的表头都低了一行, 这意味着 "Day" 成了新的索引. 有一点需要注意的是, 我们使用了 "inplace=True", 这样做是为了切实地改变原来的 dataframe. 如果不用 "inplace=True", 我们需要这样做, 也可以起到更新的作用:

df = df.set_index('Day')

这个索引列会被用作 x 轴. 如果其他列也都是数字数据, 那么我们可以轻松地通过 plot 打印出图表, 就像我们上节课所讲, 首先在脚本的顶部做如下引入:

import matplotlib.pyplot as plt
from matplotlib import style style.use('fivethirtyeight')

然后, 在下面就可以使用 plot 了. 这里还有一个小知识点要介绍的就是关于打印具体某个列, 有两种方式, 下面是第一种方式:

print(df['Visitors'])
Day
1 43
2 34
3 65
4 56
5 29
6 76
Name: Visitors, dtype: int64

第二种方式是可以把每个列都看作是 dataframe 对象的属性, 可以打点调用. 但是这里有一点要注意的是, 这个列的名称不可以有空格:

print(df.Visitors)
Day
1 43
2 34
3 65
4 56
5 29
6 76
Name: Visitors, dtype: int64

现在就来输出一个单独列的图表:

df['Visitors'].plot()
plt.show()

当然, 我们也可以把这个 dataframe 都以图表的形式输出:

df.plot()
plt.show()

我们还可以指定打印具体的某两列(在这个列子中, 我们只有两列, 但是其实不管一共有多少列, 我们都可以这样做):

print(df[['Visitors','Bounce Rate']])

当然, 我们也可以将其以图表的形式输出.

另外, 我们还可以把某个列的数据转换成数组:

print(df.Visitors.tolist())

输出:

[45, 34, 56, 67, 98, 34]

一维数组可以直接用 tolist() 函数. 那么, 如果想把两列数转换成二维数组要怎么做呢? 这时, 我们就需要再引入一个包:

import numpy as np
pd2 = np.array(df[['Visitors', 'Bounce_Rate']])
print(pd2)

输出:

[[45 65]
[34 89]
[56 43]
[67 56]
[98 73]
[34 45]]

然后再将这个二维数组转换成 dataframe:

pd2 = pd.DataFrame(np.array(df[['Visitors', 'Bounce_Rate']]))
print(pd2)

输出:

    0   1
0 45 65
1 34 89
2 56 43
3 67 56
4 98 73
5 34 45

以上就是一些简单的操作 dataframe 的方法.

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

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

  1. 基于 Python 和 Pandas 的数据分析(1)

    基于 Python 和 Pandas 的数据分析(1) Pandas 是 Python 的一个模块(module), 我们将用 Python 完成接下来的数据分析的学习. Pandas 模块是一个高性 ...

  2. Python在金融,数据分析,和人工智能中的应用

    Python在金融,数据分析,和人工智能中的应用   Python最近取得这样的成功,而且未来似乎还会继续下去,这有许多原因.其中包括它的语法.Python开发人员可用的科学生态系统和数据分析库.易于 ...

  3. 基于Python的交互式可视化工具 [转]

    前几天发现一个可视化工具Dash,当看到它的交互式效果后突然就觉得眼前一亮.早就想写出来分享给大家,今天利用睡前一点时间发出来,希望能给有需要的朋友带来一点帮助或者多一个参考. Dash介绍 在Pyt ...

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

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

  5. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

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

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

  7. 利用python进行数据分析之pandas入门

    转自https://zhuanlan.zhihu.com/p/26100976 目录: 5.1 pandas 的数据结构介绍5.1.1 Series5.1.2 DataFrame5.1.3索引对象5. ...

  8. Python数据分析之Pandas操作大全

    从头到尾都是手码的,文中的所有示例也都是在Pycharm中运行过的,自己整理笔记的最大好处在于可以按照自己的思路来构建矿建,等到将来在需要的时候能够以最快的速度看懂并应用=_= 注:为方便表述,本章设 ...

  9. python数据分析工具 | pandas

    pandas是python下强大的数据分析和探索工具,是的python在处理数据时非常快速.简单.它是构建在numpy之上的,包含丰富的数据处理函数,支持时间序列分析功能,支持灵活处理缺失数据. pa ...

随机推荐

  1. Cesium原理篇:6 Renderer模块(2: Texture)

    Texture也是WebGL中重要的概念,使用起来也很简单.但有句话叫大道至简,如果真的想要用好纹理,里面的水其实也是很深的.下面我们来一探究竟. 下面是WebGL中创建一个纹理的最简过程: var ...

  2. webdriver的工作原理

    selenium1的原理就是使用js来驱动浏览器,因为现在基本不用,所以不做过多讨论,下面是我整理的webdriver的工作原理,大致就是通过命令请求webdriver,然后webdriver通过浏览 ...

  3. editplus使用:非法字符: \65279

    众所周知,在跨程序的工程中,统一编码是至关重要的,而目前最普遍的则是统一采用“utf8”编码方案. 但是在采用utf8方案的时候,请注意编辑器的自作聪明. 比如editplus. 原因就在于某些编辑器 ...

  4. <原>ASP.NET 学习笔记之应养成的良好习惯

    写ASP.NET时应有的良好习惯(不定时增加): 1.view的名称一定要与对应的actionMethod的名称相同:从原理上看,客户端通过url(一般形式为http://xxx/controller ...

  5. Linux系统编程读书笔记

    文件I/O模型 Linux的哲学思想,一切皆文件,这也是Linux文件操作的方便之处.系统调用不会分配缓冲区用以返回信息给调用者.所以必须提前分配大小合适的缓冲区并将缓冲区指针传递给系统调用. 1.o ...

  6. 66. Plus One【leetcode】

    Given a non-negative integer represented as a non-empty array of digits, plus one to the integer. Yo ...

  7. [PHP]session回收机制及php.ini session生命期

    由于PHP的工作机制,它并没有一个daemon线程,来定时地扫描session信息并判断其是否失效.当一个有效请求发生时,PHP会根据全局变量 session.gc_probability/sessi ...

  8. 二进制包安装MYSQL——

    yum install libaio -y #安装mysql依赖包tar zxf mysql-5.5.59-linux-glibc2.12-x86_64.tar.gz mv mysql-5.5.59- ...

  9. python内置类型:列表,包括 list 和 tuple

    列表list 是一种有序的集合 ,假定list的名字为class list的元素个数:len( class) 访问元素: a. 索引从0开始    b. 也可以使用[-1],[-2],[-3] 从后面 ...

  10. 震惊!1MB == 1000KB??

    稍微对电脑了解一点的同学可能都知道,电脑中的单位换算是: 1KB = 1024B 1MB = 1024KB 1GB = 1024MB ... 以前,我也是这么认为的.... 最近我在Linux解压某个 ...