Pandas库之DataFrame使用的学习笔记


Posted in Python onJune 21, 2019

1 简介

DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表。

或许说它可能有点像matlab的矩阵,但是matlab的矩阵只能放数值型值(当然matlab也可以用cell存放多类型数据),DataFrame的单元格可以存放数值、字符串等,这和excel表很像。

同时DataFrame可以设置列名columns与行名index,可以通过像matlab一样通过位置获取数据也可以通过列名和行名定位,具体方法在后面细说。

2 创建DataFrame

首先声明一下,以下都是使用的Python 3.6.5版本为例,Python2应该也差不多吧(大概

在所有操作之前当然要先import必要的pandas库,因为pandas常与numpy一起配合使用,所以也一起import吧。

import pandas as pd
import numpy as np

如果还没安装直接在cmd里pip安装吧,如果有版本选择问题,参看之前的帖子。

pip install pandas
pip install numpy

2.1 直接创建

可以直接使用pandas的DataFrame函数创建,比如接下来我们随机创建一个4*4的DataFrame。

df1=pd.DataFrame(np.random.randn(4,4),index=list('ABCD'),columns=list('ABCD'))

其中第一个参数是存放在DataFrame里的数据,第二个参数index就是之前说的行名(或者应该叫索引?),第三个参数columns是之前说的列名。

后两个参数可以使用list输入,但是注意,这个list的长度要和DataFrame的大小匹配,不然会报错。当然,这两个参数是可选的,你可以选择不设置。

而且发现,这两个list是可以一样的,但是每行每列的名字在index或columns里要是唯一的。

使用python自己的shell展示创建的结果是这样的:

Pandas库之DataFrame使用的学习笔记

或者在jupyter里面更酷点的样子,接下来都使用jupyter输出展示吧。

Pandas库之DataFrame使用的学习笔记

当然,如果你的数据量贼小,也可以自己输入创建,类似这样。

df2=pd.DataFrame([[1,2,3,4],[2,3,4,5],
         [3,4,5,6],[4,5,6,7]],
         index=list('ABCD'),columns=list('ABCD'))

这样也可以得到这样子的DataFrame:

Pandas库之DataFrame使用的学习笔记

2.2 使用字典创建

仍然是使用DataFrame这个函数,但是字典的每个key的value代表一列,而key是这一列的列名。比如这样。

dic1={'name':['小明','小红','狗蛋','铁柱'],'age':[17,20,5,40],'gender':['男','女','女','男']}
df3=pd.DataFrame(dic1)

输出结果是这样的

Pandas库之DataFrame使用的学习笔记

3 查看与筛选数据

python没有matlab的工作区直接查看变量与内容,这大概是python科学计算的一个缺点。所以需要格外的代码来查看,最基本的直接写变量名与print就不说了。

3.1 查看列的数据类型

使用dtypes方法可以查看各列的数据类型,比如说刚刚的df3。

df3.dtypes

输出的结果是这样:

Pandas库之DataFrame使用的学习笔记

3.2 查看DataFrame的头尾

使用head可以查看前几行的数据,默认的是前5行,不过也可以自己设置。

使用tail可以查看后几行的数据,默认也是5行,参数可以自己设置。

比如随意设置一个6*6的数据,只看前5行。

df4=pd.DataFrame(np.random.randn(6,6))
df4.head()

Pandas库之DataFrame使用的学习笔记

比如只看前3行。

df4.head(3)

Pandas库之DataFrame使用的学习笔记

比如看后5行。

df4.tail()

Pandas库之DataFrame使用的学习笔记

比如只看后2行。

df4.tail(2)

Pandas库之DataFrame使用的学习笔记

3.3 查看行名与列名

使用index查看行名,columns查看列名。具体由例子感受吧。

查看行名。

df1.index

Pandas库之DataFrame使用的学习笔记

查看列名。

df3.columns

Pandas库之DataFrame使用的学习笔记

3.4 查看数据值

使用values可以查看DataFrame里的数据值,返回的是一个数组。

比如说查看所有的数据值。

df3.values

Pandas库之DataFrame使用的学习笔记

比如说查看某一列所有的数据值。

df3['name'].values

Pandas库之DataFrame使用的学习笔记

还有另一种操作,使用loc或者iloc查看数据值(但是好像只能根据行来查看?)。区别是loc是根据行名,iloc是根据数字索引(也就是行号)。

比如说这样。

df1.loc['A']

Pandas库之DataFrame使用的学习笔记

或者这样。

df1.iloc[0]

Pandas库之DataFrame使用的学习笔记

按列进行索引查看数据还能直接使用列名,但这种方法对行索引不适用。

df3['name']

Pandas库之DataFrame使用的学习笔记

3.5 查看行列数

使用shape查看行列数,参数为0表示查看行数,参数为1表示查看列数。

df3.shape[0]

Pandas库之DataFrame使用的学习笔记

df3.shape[1]

Pandas库之DataFrame使用的学习笔记

4 基本操作

DataFrame有些方法可以直接进行数据统计,矩阵计算之类的基本操作。

4.1 转置

直接字母T,线性代数上线。

比如说把之前的df2转置一下。

df3.T

Pandas库之DataFrame使用的学习笔记

4.2 描述性统计

使用describe可以对数据根据列进行描述性统计。

比如说对df1进行描述性统计。

df1.describe()

Pandas库之DataFrame使用的学习笔记

如果有的列是非数值型的,那么就不会进行统计。

如果想对行进行描述性统计,请参看4.1(转置后进行describe呀!)

4.3 计算

使用sum默认对每列求和,sum(1)为对每行求和。比如

df3.sum()

Pandas库之DataFrame使用的学习笔记

可以发现就算元素是字符串,使用sum也会加起来。

df3.sum(1)

Pandas库之DataFrame使用的学习笔记

而一行中,有字符串有数值则只计算数值。

数乘运算使用apply,比如。

df2.apply(lambda x:x*2)

Pandas库之DataFrame使用的学习笔记

如果元素是字符串,则会把字符串再重复一遍。

乘方运算跟matlab类似,直接使用两个*,比如。

df2**2

Pandas库之DataFrame使用的学习笔记

乘方运算如果有元素是字符串的话,就会报错。

4.4 新增

扩充列可以直接像字典一样,列名对应一个list,但是注意list的长度要跟index的长度一致。

df2['E']=['999','999','999','999']df2

Pandas库之DataFrame使用的学习笔记

还可以使用insert,使用这个方法可以指定把列插入到第几列,其他的列顺延。

df2['E']=['999','999','999','999']
df2

Pandas库之DataFrame使用的学习笔记

4.5 合并

使用join可以将两个DataFrame合并,但只根据行列名合并,并且以作用的那个DataFrame的为基准。如下所示,新的df7是以df2的行号index为基准的。

df6=pd.DataFrame(['my','name','is','a'],index=list('ACDH'),columns=list('G'))
df6
df7=df2.join(df6)
df7

Pandas库之DataFrame使用的学习笔记

但是,join这个方法还有how这个参数可以设置,合并两个DataFrame的交集或并集。参数为'inner'表示交集,'outer'表示并集。

df6=pd.DataFrame(['my','name','is','a'],index=list('ACDH'),columns=list('G'))
df6
df7=df2.join(df6)
df7

Pandas库之DataFrame使用的学习笔记

如果要合并多个Dataframe,可以用list把几个Dataframe装起来,然后使用concat转化为一个新的Dataframe。

df6=pd.DataFrame(['my','name','is','a'],index=list('ACDH'),columns=list('G'))
df6
df7=df2.join(df6)
df7

Pandas库之DataFrame使用的学习笔记

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
对于Python中线程问题的简单讲解
Apr 03 Python
Python中字符串的处理技巧分享
Sep 17 Python
Python如何生成树形图案
Jan 03 Python
python批量赋值操作实例
Oct 22 Python
python中break、continue 、exit() 、pass终止循环的区别详解
Jul 08 Python
Python基础之字符串操作常用函数集合
Feb 09 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
Feb 26 Python
Python基于yaml文件配置logging日志过程解析
Jun 23 Python
Python3如何实现Win10桌面自动切换
Aug 11 Python
python使用numpy中的size()函数实例用法详解
Jan 29 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
Feb 22 Python
实战Python爬虫爬取酷我音乐
Apr 11 Python
pyqt5之将textBrowser的内容写入txt文档的方法
Jun 21 #Python
pandas 数据索引与选取的实现方法
Jun 21 #Python
python实现二级登陆菜单及安装过程
Jun 21 #Python
浅谈pyqt5在QMainWindow中布局的问题
Jun 21 #Python
jupyter notebook 中输出pyecharts图实例
Apr 23 #Python
解决pyqt5中QToolButton无法使用的问题
Jun 21 #Python
Pandas删除数据的几种情况(小结)
Jun 21 #Python
You might like
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
Yii框架中memcache用法实例
2014/12/03 PHP
php购物车实现方法
2015/01/03 PHP
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
2016/02/29 Javascript
纯JS实现轮播图
2017/02/22 Javascript
React Native如何消除启动时白屏的方法
2017/08/08 Javascript
vue 组件 全局注册和局部注册的实现
2018/02/28 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
2020/09/08 Javascript
Python实现模拟登录及表单提交的方法
2015/07/25 Python
Python中的模块导入和读取键盘输入的方法
2015/10/16 Python
Python基础教程之正则表达式基本语法以及re模块
2016/03/25 Python
Python 搭建Web站点之Web服务器网关接口
2016/11/06 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
2017/02/16 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
python enumerate内置函数用法总结
2020/01/07 Python
python 函数中的参数类型
2020/02/11 Python
多个python文件调用logging模块报错误
2020/02/12 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
回门宴答谢词
2014/01/13 职场文书
公司营业员的自我评价
2014/03/04 职场文书
班主任班级寄语大全
2014/04/04 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
MySQL分库分表详情
2021/09/25 MySQL
Python基本的内置数据类型及使用方法
2022/04/13 Python
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers