Pandas 库之 DataFrame
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展示创建的结果是这样的:
或者在jupyter里面更酷点的样子,接下来都使用jupyter输出展示吧。
当然,如果你的数据量贼小,也可以自己输入创建,类似这样。
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:
2.2 使用字典创建
仍然是使用DataFrame这个函数,但是字典的每个key的value代表一列,而key是这一列的列名。比如这样。
dic1={'name':['小明','小红','狗蛋','铁柱'],'age':[17,20,5,40],'gender':['男','女','女','男']} df3=pd.DataFrame(dic1)
输出结果是这样的
3 查看与筛选数据
python没有matlab的工作区直接查看变量与内容,这大概是python科学计算的一个缺点。所以需要格外的代码来查看,最基本的直接写变量名与print就不说了。
3.1 查看列的数据类型#
使用dtypes方法可以查看各列的数据类型,比如说刚刚的df3。
df3.dtypes
输出的结果是这样:
3.2 查看DataFrame的头尾#
使用head可以查看前几行的数据,默认的是前5行,不过也可以自己设置。
使用tail可以查看后几行的数据,默认也是5行,参数可以自己设置。
比如随意设置一个6*6的数据,只看前5行。
df4=pd.DataFrame(np.random.randn(6,6)) df4.head()
比如只看前3行。
df4.head(3)
比如看后5行。
df4.tail()
比如只看后2行。
df4.tail(2)
3.3 查看行名与列名#
使用index查看行名,columns查看列名。具体由例子感受吧。
查看行名。
df1.index
查看列名。
df3.columns
3.4 查看数据值#
使用values可以查看DataFrame里的数据值,返回的是一个数组。
比如说查看所有的数据值。
df3.values
比如说查看某一列所有的数据值。
df3['name'].values
还有另一种操作,使用loc或者iloc查看数据值(但是好像只能根据行来查看?)。区别是loc是根据行名,iloc是根据数字索引(也就是行号)。
比如说这样。
df1.loc['A']
或者这样。
df1.iloc[0]
按列进行索引查看数据还能直接使用列名,但这种方法对行索引不适用。
df3['name']
3.5 查看行列数#
使用shape查看行列数,参数为0表示查看行数,参数为1表示查看列数。
df3.shape[0]
df3.shape[1]
4 基本操作
DataFrame有些方法可以直接进行数据统计,矩阵计算之类的基本操作。
4.1 转置#
直接字母T,线性代数上线。
比如说把之前的df2转置一下。
df3.T
4.2 描述性统计#
使用describe可以对数据根据列进行描述性统计。
比如说对df1进行描述性统计。
df1.describe()
如果有的列是非数值型的,那么就不会进行统计。
如果想对行进行描述性统计,请参看4.1(转置后进行describe呀!)
4.3 计算#
使用sum默认对每列求和,sum(1)为对每行求和。比如
df3.sum()
可以发现就算元素是字符串,使用sum也会加起来。
df3.sum(1)
而一行中,有字符串有数值则只计算数值。
数乘运算使用apply,比如。
df2.apply(lambda x:x*2)
如果元素是字符串,则会把字符串再重复一遍。
乘方运算跟matlab类似,直接使用两个*,比如。
df2**2
乘方运算如果有元素是字符串的话,就会报错。
4.4 新增#
扩充列可以直接像字典一样,列名对应一个list,但是注意list的长度要跟index的长度一致。
df2['E']=['999','999','999','999'] df2
还可以使用insert,使用这个方法可以指定把列插入到第几列,其他的列顺延。
df2.insert(0,'F',[888,888,888,888]) df2
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
但是,join这个方法还有how这个参数可以设置,合并两个DataFrame的交集或并集。参数为'inner'表示交集,'outer'表示并集。
df8=df2.join(df6,how='inner') df8 df9=df2.join(df6,how='outer') df9
Pandas 库之 DataFrame相关推荐
- python dataframe 列_python pandas库中DataFrame对行和列的操作实例讲解
用pandas中的DataFrame时选取行或列: import numpy as np import pandas as pd from pandas import Sereis, DataFram ...
- python——pandas库之DataFrame数据结构基础
DataFrame简介 dataframe表示的是矩阵的数据表,每一列可以是不同的值类型,可以看作一个共享相同索引的Series字典.在dataframe中,数据被存储为一个以上的二维块 1.利用等长 ...
- 【python】pandas库pd.DataFrame.corr、numpy库np.corrcoef求解相关系数
- 一.首先生成数据: 1.df 数据: import pandas as pd from pandas import DataFrame,Series df = pd.DataFrame(np.ra ...
- 【Pandas库】(3) DataFrame的创建方法及基本操作
各位同学好,今天给大家介绍一下Pandas库中DataFrame类型数据的创建方法和基本操作. 文章内容如下: (1)使用字典类创建. 字典类有:①数组.列表.元组构成的字典:②Series构造的字典 ...
- Pandas库(1):DataFrame类
Pandas库围绕Series类型和DataFrame类型这两种数据结构,提供了一种高效便捷的数据处理方式. 一.DataFrame类概述 1.Series是pandas库的一维数据类型,DateFr ...
- Pandas库入门详细教程
Pandas库的介绍 1.Pandas是Python第三方库,提供高性能易用数据类型和分析工具. 2.Pandas基于NumPy实现,常与NumPy和Matplotlib一同使用. 3.Pandas库 ...
- python数据分析与展示--Pandas库入门
一.Pandas库的引用 Pandas是python第三方库,通过了高性能易用的数据类型和分析工具;Pandas库包含了Series,DataFrame两个数据类型,基于这两个数据类型可以实现基本,运 ...
- python dataframe 新列_Python第二十四课:Pandas库(四)
Python第二十四课:Pandas库(四)点击上方"蓝字",关注我们. 不知不觉,我们已经跨越了千难万险,从零开始,一步步揭开了Python神秘的面纱.学到至今,回过头,才晓得自 ...
- Pandas库DataFrame的简单应用2
Pandas练习2 练习题 DataFrame的简单应用 练习1 代码 效果图 练习2 代码 效果图 小结 练习题 DataFrame的简单应用 练习1 代码 import pandas as pd# ...
- nvidia-rapids︱cuDF与pandas一样的DataFrame库
cuDF(https://github.com/rapidsai/cudf)是一个基于Python的GPU DataFrame库,用于处理数据,包括加载.连接.聚合和过滤数据.向GPU的转移允许大规模 ...
最新文章
- 2021 年技术 5 大趋势
- 139.00.005 Git学习-分支管理
- jnativecpp.dll一定要放到系统目录下吗_电脑硬盘有必要分区吗,分几个区最好?...
- kitti raw data development kit的使用
- python setup_简述python setup.py install的过程
- html基础之弹性布局(dispaly :flex)
- 北京各区优质高中排名
- 算法分析与设计(NPC问题)
- 充电w数测试软件,充电功率检测(cn.nowtool.battery) - 1.3.0 - 应用 - 酷安
- mysql实体完整性实现方法_mysql 完整性约束
- 零基础学前端系列教程 | 和前端谈恋爱的第004天——打扮漂亮
- 《痞子衡嵌入式半月刊》 第 69 期
- 淘宝/天猫获得淘宝app商品详情原数据 API
- Debian squeeze 美化字体
- 苏宁门店数字化白皮书发布 行业数字化进程将再提速
- 英语CET6救命作文通用模板
- 华为员工利用Bug越权访问机密卖给第三方,获利1.6万元,被判有期徒刑一年
- xp故障恢复控制台和它的命令 1
- 图像的down-samplig 和up-sampling
- 从今天开始给自己定一个小目标
热门文章
- linux下分配磁盘空间,linux如何分配磁盘空间
- python一个字符占几个字节_字符串在Python内部是如何省内存的
- W ndoWs7更新怎么关闭,怎么设置关闭win7自动更新
- shell脚本快速执行命令
- 蚂蚁金服刘伟光:我们为什么要科技开放
- 高可用、全集成、定制化,蚂蚁金服自动化测试如何演进
- 小型网络综合设计 (利用交换机实现不同VLAN之间相互通信)
- 计算机网络怎么查看连接打印机驱动,怎么检查电脑中是否已成功连接网络打印机...
- Echarts使用之-散点图(各国人均寿命与GDP关系演变)
- OkHttp系列——使用教程