数据框类似于二维的关系表,包含一组有序的列,列与列之间的数据类型可以是不同的,但是单个列的数据类型是相同的。数据框的每一列或每一行都可以认为是一个Series。DataFrame中面向行和面向列的操作基本上是相同的,把行和列称作轴(axis),DataFrame是按照轴进行操作的,axis=0表示行轴;axis=1 表示列轴。

DataFrame对象既有行索引(index),也有列索引(columns),行索引也叫做行标签,列索引也叫做列标签/列名。在DataFrame的构造函数中,columns参数用于设置列索引,index用于设置行索引,都属于Index类型。Index对象既可以使用位置(整数)来表示,也可以使用标签(字符串)来表示,位置的起始值是0,标签是通过列表来指定的。

一,数据框构造函数

数据框的基础构造函数是DataFrame,从array-like的结构中构造数据框:

pandas.DataFrame(data=None, index=None, columns=None)

参数注释:

  • data:ndarray、list 或dict
  • index:行索引
  • columns:列名列表

除了基础构造函数之外,还有 DataFrame.from_records 和 DataFrame.from_dict,专门用于从元组 和 字典中创建数据框。

二,创建数据框

通常情况下,我们使用pd.DataFrame()函数来创建数据框,当然也可以根据需要使用pd.DataFrame.from_dict()函数来创建数据框。

1,使用字典来创建数据框

通过等长的字典来创建数据框,并可以设置数据框的列名和行索引。字典存储的是每列的数据:

>>> data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
... 'year': [2000, 2001, 2002, 2001, 2002],
... 'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
>>> row_index = ['one', 'two', 'three', 'four', 'five']
>>> col_names=['year', 'state', 'pop']
>>> df=pd.DataFrame(data,columns=col_names,index=row_index)
year state pop
one 2000 Ohio 1.5
two 2001 Ohio 1.7
three 2002 Ohio 3.6
four 2001 Nevada 2.4
five 2002 Nevada 2.9

2,使用列表(列表项是List)来创建数据框

列表项是列表,把该列表转换为DataFrame:

students = [ ['jack', 34, 'Sydeny'] ,
['Riti', 30, 'Delhi' ] ,
['Aadi', 16, 'New York'] ]
df = pd.DataFrame(students)

3,使用列表(列表项是元组)来创建数据框

列表项是元组,把该列表转换为DataFrame:

students = [ ('jack', 34, 'Sydeny') ,
('Riti', 30, 'Delhi' ) ,
('Aadi', 16, 'New York') ]
df = pd.DataFrame(students)

4,使用from_dict创建数据框

data是一个字典结构,字典的Key是列名,Value是一个列表,通过这种格式创建数据框:

>>> data = {'col_1': [3, 2, 1, 0], 'col_2': ['a', 'b', 'c', 'd']}
>>> pd.DataFrame.from_dict(data)
col_1 col_2
0 3 a
1 2 b
2 1 c
3 0 d

三,数据框的属性

数据框的属性主要是索引、列名、数据类型和值,对于一下数据框

1,数据框的索引

通过index属性来访问数据框的行标签,通过columns属性访问数据框的列标签:

>>> df.index
Index(['one', 'two', 'three', 'four', 'five'], dtype='object')
>>> df.columns
Index(['year', 'state', 'pop'], dtype='object')

2,数据类型

查看数据框各列的数据类型

>>> df.dtypes
year int64
state object
pop float64
dtype: object

查看数据框中某一列的数据类型:

df['col_name'].dtypes
df.col_name.dtypes

3,数据框的值

values属性以Numpy数组形式显示数据框的值:

>>> df.values
array([[2000, 'Ohio', 1.5],
[2001, 'Ohio', 1.7],
[2002, 'Ohio', 3.6],
[2001, 'Nevada', 2.4],
[2002, 'Nevada', 2.9]], dtype=object)

4,数据框的轴和形状

>>> df.axes
[Index(['one', 'two', 'three', 'four', 'five'], dtype='object'), Index(['year', 'state', 'pop'], dtype='object')]
>>> df.shape
(5, 3)

四,列操作和行操作

追加列

通过为一个新列赋值来向数据框中追加新列,新列始终处于列名序列的末尾:

>>> df['new']='a'

插入列 

要制定新列的位置,需要使用insert()函数,该函数向数据框中插入一列,并制定新列的位置:

DataFrame.insert(self, loc, column, value)

参数注释:

  • loc:插入列的位置,该位置索引必须0 <= loc <= len(columns)
  • column:插入列的名称
  • value:插入列的值,可以是单个标量值,插入列的值都是相同的;可以是序列或array-like,为每一行的列设置一个值。

举个例子,向df的末尾插入一列,列值都是a:

>>> df.insert(3,'new','a')

删除列或行

使用drop()函数来删除行或列:

DataFrame.drop(self, labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')

参数注释:

  • labels 和 axis:labels参数指定要删除的标签,如果axis=0 或 'index',表示行标签;如果axis=1 或 'columns',表示列标签。axis的默认值是0。
  • index:设置index 等价于设置 labels 和axis=0;
  • columns:设置columns等价于设置 labels和 axis=1;

举个例子,把df的列new删除:

>>> df.drop(labels='new',axis=1)

追加数据行

向数据框的末尾追加数据行:

DataFrame.append(self, other, ignore_index=False, verify_integrity=False, sort=None)

也就是把一个结构相同的DataFrame追加到另一个DataFrame的后面,把两个DataFrame合并为一个。

五,列数据类型转换

astype(dtype) 函数用于把数据框的列转换为特定的类型,dtype可以是pandas支持的类型,也可以是numpy.dtype,也可以是Python类型:

把数据框的列改变为字符串类型,str是python类型,'object'是pandas支持的字符串类型:

df['col_name'].astype(str)
df['col_name'].astype('object')

其他转换类型的函数

使用Pandas提供的函数如to_numeric()、to_datetime()

参考文档:

pandas DataFrame

Python 学习 第十二篇:pandas的更多相关文章

  1. Python学习第十二篇——切片的使用

    Python中使用函数切片可以创建副本,保留原本.现在给出如下代码 magicians_list = ['mole','jack','lucy'] new_lists = [] def make_gr ...

  2. Python学习笔记(十二)—Python3中pip包管理工具的安装【转】

    本文转载自:https://blog.csdn.net/sinat_14849739/article/details/79101529 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...

  3. python 学习笔记十二 html基础(进阶篇)

    HTML 超级文本标记语言是标准通用标记语言下的一个应用,也是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分.网页文件本身 是一种文本文件,通过在文本文件中添加标记符, 可以告诉浏览 ...

  4. python 学习笔记十二 CSS基础(进阶篇)

    1.CSS 简介 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与 ...

  5. 图解Python 【第十二篇】:Django 基础

    本节内容一览表: Django基础:http://www.ziqiangxuetang.com/django/django-tutorial.html 一.Django简介 Django文件介绍:ht ...

  6. python【第十二篇】Mysql基础

    内容: 1.数据库介绍及MySQL简介 2.MySQL基本操作 1 数据库介绍 1.1什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同 ...

  7. 从.Net到Java学习第十二篇——SpringBoot+JPA提供跨域接口

    从.Net到Java学习系列目录 最近又撸了半个月的前端代码,做app离线存储,然后又花了一周去将过去的wcf项目转webapi,java又被落下了,总感觉我特么像斗地主中的癞子牌,变来变去..... ...

  8. Python 学习 第十六篇:networkx

    networkx是Python的一个包,用于构建和操作复杂的图结构,提供分析图的算法.图是由顶点.边和可选的属性构成的数据结构,顶点表示数据,边是由两个顶点唯一确定的,表示两个顶点之间的关系.顶点和边 ...

  9. Python 学习 第十五篇:模块搜索路径和包导入

    在导入自定义的模块时,除了指定模块名之外,也需要指定目录,由于Python把目录称作包,因此,这类导入被称为包导入.包导入把计算机上的目录变成Python的命名空间,而目录中所包含的子目录和模块文件则 ...

随机推荐

  1. java StringBuffer读写文件

    java StringBuffer读写文件 StringBuffer的优势 较String:String每更新一次就会new一个新的对象出来,更新次数上去之后,内存开销太大.而StringBuffer ...

  2. git 入门教程之知识速查

    知识速查 创建版本库 初始化项目 git init 从零开始创建项目 示例 git init 克隆项目 git clone 将已有项目拷贝到本地 示例 git clone git@github.com ...

  3. Android getprop 读取的属性哪里来的?

    Android  getprop 和  setprop 可以对系统属性进行读取和设置. 通过串口执行以下 geyprop    打印出来的属性让你一目了然. 属性出来了,但是在哪里设置的呢,这里有两个 ...

  4. Python之给程序传参数

    1.代码 import sys # 导入系统 args = sys.argv # 获取系统参数 if(args.__len__() == 2): print("%s是世界上最好的语言!&qu ...

  5. SQL 中用户定义函数的使用方法

    --用户定义函数的分类: /* 1.标量函数 2.表值函数 2.1内联表值函数  返回单个SELECT语句, 它没有相关的返回变量和函数体 2.2多语句表值函数  是视图和存储过程的结合 可嵌套 */ ...

  6. [20180819]关于父子游标问题(11g).txt

    [20180819]关于父子游标问题(11g).txt --//sql语句存在父子游标,子游标堆6在父游标堆0里面.--//如果存在许多子游标的情况下,父游标堆0是否大小是发生变化呢.测试看看.--/ ...

  7. 老K漫谈区块链的共识(3)——分布式系统和区块链共识

    1. 啥是分布式系统 当我们评价一个新的事物或者介绍一个新的技术的时候,我们不能架空历史和环境,新的事物不可能脱离历史和环境凭空诞生.任何新的事物和新的技术总是或多或少的,与旧的事件以及过去的技术有所 ...

  8. Windows重启显卡驱动热键说明

    Windows 有一个秘密的快捷键,可以重启显卡驱动程序.如果你的电脑经常“冻屏”,可以在重启电脑之前试试这个快捷键,它可以修复冻屏,否则就只能强制重启电脑了. 这个组合快捷键将重启 Win10 和 ...

  9. echarts 设置图例的颜色,不设置color,echarts里面也会有默认的颜色

  10. Python 抖音机器人,论如何在抖音上找到漂亮小姐姐?

    只有想不到,没有做不到,最近抖音风靡好友圈,马上就有技术宅本着“代码改变世界”的理念开始了搞事之路. 需要注意的事,漂亮不漂亮没有明确的界限,每个人都有每个人的审美,只有外表而没有心灵的美也是空洞的. ...