前面我们学习了numpy,现在我们来学习一下pandas。

Python Data Analysis Library 或 pandas 主要用于处理类似excel一样的数据格式,其中有表头、数据序列号以及实际的数据,而numpy就仅仅包含了实际的数据。

安装

直接输入:

  1. pip3 install pandas

最基本用法

  1. import pandas as pd
  2. s = pd.Series([1, 2, 5, 6])
  3. print(s)

输出:

  1. 0 1
  2. 1 2
  3. 2 5
  4. 3 6
  5. dtype: int64

我们可以看到pandas自动添加了数据的序列号。

自定义索引项和列名

  1. import pandas as pd
  2. import numpy as np
  3. # 创建一个日期索引项
  4. dates = pd.date_range("2017-01-04", periods=6)
  5. print("dates=", dates)
  6. # 创建一个类似excel表格一样的数据表,其中索引项为日期索引,列名为:a,b,c,d
  7. data = pd.DataFrame(np.random.rand(6, 4), index=dates, columns=["a", "b", "c", "d"])
  8. print("data=")
  9. print(data)

输出:

  1. dates= DatetimeIndex(['2017-01-04', '2017-01-05', '2017-01-06', '2017-01-07',
  2. '2017-01-08', '2017-01-09'],
  3. dtype='datetime64[ns]', freq='D')
  4. data=
  5. a b c d
  6. 2017-01-04 0.637641 0.756613 0.297506 0.692492
  7. 2017-01-05 0.319457 0.401690 0.550955 0.862642
  8. 2017-01-06 0.685646 0.007546 0.376774 0.735220
  9. 2017-01-07 0.767868 0.000718 0.799336 0.428242
  10. 2017-01-08 0.004777 0.292726 0.227704 0.117925
  11. 2017-01-09 0.946817 0.153245 0.154102 0.165621

看,输出了一个比较规整的电子表格。

上面这些命令包括需要哪些参数不需要特别记忆,如果你用idea的话会自动给你提示的。

默认索引号和列名

如果我们没有指定索引号和列名,pandas会自动以0,1,2这样的自然数来定义我们的索引号和列名,例如:

  1. import pandas as pd
  2. import numpy as np
  3. data = pd.DataFrame(np.random.rand(6, 4))
  4. print("data=")
  5. print(data)

输出:

  1. data=
  2. 0 1 2 3
  3. 0 0.515289 0.900554 0.490999 0.941186
  4. 1 0.706116 0.267078 0.870968 0.904068
  5. 2 0.002414 0.648418 0.579449 0.827671
  6. 3 0.473538 0.640514 0.564209 0.040902
  7. 4 0.052849 0.372015 0.613814 0.516763
  8. 5 0.484220 0.479558 0.007722 0.216598

map方式创建DataFrame

可以用一个map方式来创建DataFrame,这样相当于map中的key为列名,value为此列的数据列表:

  1. import pandas as pd
  2. import numpy as np
  3. data = pd.DataFrame({
  4. "A": np.array([1, 2, 3, 5]),
  5. "B": ["test", "train", "go", "java"],
  6. "C": "dog",
  7. "D": 12
  8. })
  9. print("data=")
  10. print(data)

输出为:

  1. data=
  2. A B C D
  3. 0 1 test dog 12
  4. 1 2 train dog 12
  5. 2 3 go dog 12
  6. 3 5 java dog 12

查看每列的数据类型

我想知道pandas中每列的数据类型,有点像了解数据库中表的字段类型,这可以通过dtypes属性获得:

  1. import pandas as pd
  2. import numpy as np
  3. data = pd.DataFrame({
  4. "A": np.array([1, 2, 3, 5]),
  5. "B": ["test", "train", "go", "java"],
  6. "C": "dog",
  7. "D": 12
  8. })
  9. print(data.dtypes)

输出:

  1. A int32
  2. B object
  3. C object
  4. D int64
  5. dtype: object

获得列名和索引

想要获得pandas中的列名和索引,只要使用columns和index属性就可以:

  1. import pandas as pd
  2. import numpy as np
  3. data = pd.DataFrame({
  4. "A": np.array([1, 2, 3, 5]),
  5. "B": ["test", "train", "go", "java"],
  6. "C": "dog",
  7. "D": 12
  8. })
  9. print("列名:", data.columns)
  10. print("索引:", data.index)

输出:

  1. 列名: Index(['A', 'B', 'C', 'D'], dtype='object')
  2. 索引: RangeIndex(start=0, stop=4, step=1)

使用describe()函数对数据快速统计汇总

  1. import pandas as pd
  2. import numpy as np
  3. data = pd.DataFrame({
  4. "A": np.array([1, 2, 3, 5]),
  5. "B": ["test", "train", "go", "java"],
  6. "C": "dog",
  7. "D": 12
  8. })
  9. print(data.describe())

输出:

  1. A D
  2. count 4.000000 4.0
  3. mean 2.750000 12.0
  4. std 1.707825 0.0
  5. min 1.000000 12.0
  6. 25% 1.750000 12.0
  7. 50% 2.500000 12.0
  8. 75% 3.500000 12.0
  9. max 5.000000 12.0

其中就对可计算的列进行计数、求平均值、方差、最小值、最大值等。

pandas转置

相当于把电子表格中的行和列翻转一下。

  1. import pandas as pd
  2. import numpy as np
  3. data = pd.DataFrame({
  4. "A": np.array([1, 2, 3, 5]),
  5. "B": ["test", "train", "go", "java"],
  6. "C": "dog",
  7. "D": 12
  8. })
  9. print(data.T)

输出:

  1. 0 1 2 3
  2. A 1 2 3 5
  3. B test train go java
  4. C dog dog dog dog
  5. D 12 12 12 12

这样索引项就变成了原先数据集中的列名。

排序

sort_index()可以按照索引项进行排序。

  1. import pandas as pd
  2. import numpy as np
  3. data = pd.DataFrame({
  4. "A": np.array([1, 2, 3, 5]),
  5. "B": ["test", "train", "go", "java"],
  6. "C": "dog",
  7. "D": 12
  8. })
  9. # 按照索引项进行倒排
  10. print("按照索引项进行倒排:")
  11. print(data.sort_index(ascending=False))
  12. # 对列名进行倒排
  13. print("对列名进行倒排:")
  14. print(data.sort_index(axis=1, ascending=False))

输出:

  1. 按照索引项进行倒排:
  2. A B C D
  3. 3 5 java dog 12
  4. 2 3 go dog 12
  5. 1 2 train dog 12
  6. 0 1 test dog 12
  7. 对列名进行倒排:
  8. D C B A
  9. 0 12 dog test 1
  10. 1 12 dog train 2
  11. 2 12 dog go 3
  12. 3 12 dog java 5

排序中的数据会跟着列或索引项进行调换顺序,因此数据不会错乱。

按照值排序

使用sort_values()函数对值进行排序,其中可以指定按照哪一列的数据进行排序的:

  1. import pandas as pd
  2. import numpy as np
  3. data = pd.DataFrame({
  4. "A": np.array([1, 2, 3, 5]),
  5. "B": ["test", "train", "go", "java"],
  6. "C": "dog",
  7. "D": 12
  8. })
  9. print(data.sort_values(by='B'))

输出:

  1. A B C D
  2. 2 3 go dog 12
  3. 3 5 java dog 12
  4. 0 1 test dog 12
  5. 1 2 train dog 12

pandas基本介绍-【老鱼学pandas】的更多相关文章

  1. pandas合并merge-【老鱼学pandas】

    本节讲述对于两个数据集按照相同列的值进行合并. 首先定义原始数据: import pandas as pd import numpy as np data0 = pd.DataFrame({'key' ...

  2. pandas画图-【老鱼学pandas】

    本节主要讲述如何把pandas中的数据用图表的方式显示在屏幕上,有点类似在excel中显示图表. 安装matplotlib 为了能够显示图表,首先需要安装matplotlib库,安装方法如下: pip ...

  3. pandas选择数据-【老鱼学pandas】

    选择列 根据列名来选择某列的数据 import pandas as pd import numpy as np dates = pd.date_range("2017-01-08" ...

  4. pandas设置值-【老鱼学pandas】

    本节主要讲述如何根据上篇博客中选择出相应的数据之后,对其中的数据进行修改. 对某个值进行修改 例如,我们想对数据集中第2行第2列的数据进行修改: import pandas as pd import ...

  5. pandas处理丢失数据-【老鱼学pandas】

    假设我们的数据集中有缺失值,该如何进行处理呢? 丢弃缺失值的行或列 首先我们定义了数据集的缺失值: import pandas as pd import numpy as np dates = pd. ...

  6. pandas导入导出数据-【老鱼学pandas】

    pandas可以读写如下格式的数据类型: 具体详见:http://pandas.pydata.org/pandas-docs/version/0.20/io.html 读取csv文件 我们准备了一个c ...

  7. pandas合并数据集-【老鱼学pandas】

    有两个数据集,我们想把他们的结果根据相同的列名或索引号之类的进行合并,有点类似SQL中的从两个表中选择出不同的记录并进行合并返回. 合并 首先准备数据: import pandas as pd imp ...

  8. 二分类问题续 - 【老鱼学tensorflow2】

    前面我们针对电影评论编写了二分类问题的解决方案. 这里对前面的这个方案进行一些改进. 分批训练 model.fit(x_train, y_train, epochs=20, batch_size=51 ...

  9. tensorflow卷积神经网络-【老鱼学tensorflow】

    前面我们曾有篇文章中提到过关于用tensorflow训练手写2828像素点的数字的识别,在那篇文章中我们把手写数字图像直接碾压成了一个784列的数据进行识别,但实际上,这个图像是2828长宽结构的,我 ...

随机推荐

  1. 使用docker 解决一个小问题,你也可能用的到

    以前一直觉得docker是运维用的工具,或者devops 用的工具,一般人应该用不上,直到最近发现docker 还有另外一个妙用,不管是什么语言. 这几天开会网络特别不好,nodejs npm 仓库 ...

  2. php header的使用,PHP常见header状态总结

    <?php//200 正常状态header('HTTP/1.1 200 OK');// 301 永久重定向,记得在后面要加重定向地址 Location:$urlheader('HTTP/1.1 ...

  3. 读阮一峰老师 es6 入门笔记 —— 第一章

    鉴于最近用 vuejs 框架开发项目,其中有很多涉及到 es6 语法不太理解所以便认真地读了一下这本书. 地址:http://es6.ruanyifeng.com/#README 第一章:let ,c ...

  4. 【转】 bio 与块设备驱动

    原文地址: bio 与块设备驱动      系统中能够随机访问固定大小数据片(chunk)的设备被称作块设备,这些数据片就称作块.块设备文件都是以安装文件系统的方式使用,此也是块设备通常的访问方式.块 ...

  5. (七)php运算符

    一:算数运算符 +(加).-(减).*(成)./(除) %(取模,求余的意思) <?php $a=7/3; echo $a; //2.3333333333333.因为float类型的最大精度为1 ...

  6. Java Condition

    在Condition中,用await()替换wait(),用signal()替换notify(),用signalAll()替换notifyAll(),传统线程的通信方式,Condition都可以实现, ...

  7. EJBCA安装教程+postgresql+wildfly10

    1. 安装环境说明 笔者在本机的虚拟机下进行的安装,数据库已经装好了的. ubuntu16.04 x64 postgresql:9 wildfly10 2. 安装前准备 下载必要软件包(直接到官网下载 ...

  8. Java基础——输入输出

    在程序最开始  import java.util.*; 因为Scanner类定义在java.util包中. 读取输入: 先构造一个Scanner对象,并与"标准输入流"System ...

  9. HBase数据备份及恢复(导入导出)的常用方法

    一.说明 随着HBase在重要的商业系统中应用的大量增加,许多企业需要通过对它们的HBase集群建立健壮的备份和故障恢复机制来保证它们的企业(数据)资产.备份Hbase时的难点是其待备份的数据集可能非 ...

  10. coursera无法观看视频解决方法

    coursera无法观看视频解决方法 Coursera是国外的一款非常有名的公开课网站,值得大家一起学习,奈何"长城"太厚,经常被和谐,一些视频打不开,最近找到不用FQ的方法,共享 ...