pandas中的DataFrame类型

本文详细介绍了Pandas的DataFrame数据结构,包括如何创建DataFrame、数据读取、列和行的操作。创建DataFrame可以通过二维列表、字典或Series,行和列可通过索引进行选取、添加和删除。此外,还展示了DataFrame的属性如values和常用方法,如loc和iloc用于数据读取,以及如何使用append和drop进行数据行的增删。
摘要由CSDN通过智能技术生成

DataFrame 是一个表格型的数据结构,可以看成就是excel中的表格。
有行有列
在这里插入图片描述
每一行或者每一列都可以看成是一个Series,所以在创建DataFrame是可以使用Series创建。

DataFrame的创建
DataFrame 构造方法如下:

pandas.DataFrame( data, index, columns, dtype, copy)
  • data:一组数据(ndarray、series, map, lists, dict 等类型)。
  • index:索引值,或者可以称为行标签。
  • columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。
  • dtype:数据类型。
  • copy:拷贝数据,默认为 False。

Pandas DataFrame 是一个二维的数组结构,类似二维数组。

1. 一行一行的创建这个表格

如果给出的数据是一行一行的形式,怎么创建DF
先不考虑行索引和列标签,直接传递一个二维列表或者ndarray类型的二维数组,其中,二维数组内的每一个列表就是每一行的数据。
举例:

import numpy as np
import pandas as pd
#创建一个二维的ndarray
data = np.arange(12).reshape(3,4)
data
#每一行就是DF中的每一行

在这里插入图片描述

df = pd.DataFrame(data)
df
#可以看到行列索引在没有指定的时候都是从0开始的正整数

在这里插入图片描述

#指定索引
colIndex = ['col1','col2','col3','col4']
rowIndex = ['row1','row2','row3']
#指定列标签
df.columns = colIndex
#指定行索引
df.index = rowIndex
df

在这里插入图片描述

2.用列表嵌套字典按行创建

使用字典按照键值对的形式给出数据,创建DataFrame

data = [
    #列表内的每一个字典就是一行数据,
    #字典内的key就是列的标签
    {'name':'张三','age':19,'sex':'m'},
    {'name':'李四','age':20,'sex':'f'},
    {'name':'王五','age':22,'sex':'m'}
]
df = pd.DataFrame(data,index = [100,101,102])
df

在这里插入图片描述

使用字典以列的形式创建DataFrame

给出的数据是列的形式下创建DF
创建中需要借助字典

#字典的key作为列的标签
#每一个key对应的value 就是这一列的数据
data = {
    'name':['张三','李四','王五'],
    'age':[19,20,22],
    'sex':['m','f','m']
}
df = pd.DataFrame(data)
df

在这里插入图片描述

以Series按照列的形式创建DF
数据的读取

现在有一个DataFrame:

data = {
    'name':['zs','ls','ww'],
    'age':[19,20,22],
    'sex':['男','女','男']
}
df = pd.DataFrame(data)
df

在这里插入图片描述

列的操作
1.用列索引选取某列数据

如果想要拿到age列的数据。使用列标签拿到df[‘列索引名称']
同时返回的数据是一个Series类型的数据

print(df['age'])
print(type(df['age']))

在这里插入图片描述
进一步想要将列的数据以ndarray数组的形式返回出来,则使用Series的values属性:

print(df['age'].values)
print(type(df['age'].values))

在这里插入图片描述

2.添加一列数据:

直接在末尾添加
添加一列数据就直接添加,添加的时候指定列的索引值就行:

#可以用Series类型来添加
df['yuwen'] = pd.Series([88,90,97])

#也可以是列表类型直接添加
df['shuxue'] = [100,90,70]
df

在这里插入图片描述
还可以直接使用列做加法操作:

df['sum'] = df['yuwen'] + df['shuxue']
df

在这里插入图片描述
字符类型也可以加,只是简单的拼接:
在这里插入图片描述
在指定位置添加列:
除了使用df[]=value的方式外,还可以使用 insert() 方法插入新的列,示例如下:

insert(loc, column, value, allow_duplicates=False)
Parameters
    ----------
    loc : int
        Insertion index. Must verify 0 <= loc <= len(columns).
    column : str, number, or hashable object
        Label of the inserted column.
    value : int, Series, or array-like
    allow_duplicates : bool, optional

主要参数在于loc, column, value:

  • loc:指定插入的位置,列的整数索引值,其实列标签内部是有一个整数索引的,0:第一列,依次往后
  • column:新插入的列的标签,也就是这一列的名字;
  • value:插入列的数据,类型可以是:int, Series, or array-like

举例:

#在第一列位置插入一列
df.insert(0,column='id',value=[2201,2202,2203])
df

在这里插入图片描述

3. 删除某一列数据:
#使用del 指定列索引 来删除
del df['sum']
df

在这里插入图片描述
或者使用df.pop()方法删除并返回该列的数据:

pop(item)
	#参数
    ----------
    item : label:删除的列的名称
        Label of column to be popped.
        
  	#返回值
    -------
    Series:返回的是列的Series类型
shuxue = df.pop('shuxue')
print(type(shuxue))
print(shuxue)
df

在这里插入图片描述

行的操作

在这里插入图片描述

1. 行数据读取

行标签读取

一个参数
可以将行标签传递给 loc 函数,使用df.loc[行标签]来选取数据。

loc 允许接两个参数分别是行和列,参数之间需要使用“逗号”隔开,但该函数只能接收标签索引。

在这里插入图片描述
两个参数
读取到表格中的某一个数据:
在这里插入图片描述
返回的时行索引值为second,列索引值为name 的这个单元格总的数据

行索引值读取(默认的整数索引)

一个参数

iloc 允许接受两个参数分别是行和列,参数之间使用“逗号”隔开,但该函数只能接收整数索引。
df.loc[0]会出错,要使用df.iloc[0]

在这里插入图片描述

两个参数
在这里插入图片描述
返回的时行索引为2,列索引为4的数据,即:
在这里插入图片描述

切片操作读取多行

在这里插入图片描述

这种方式只能读取多行,df[0]会报错,所以取出单行数据就使用loc[]或者iloc[]
在这里插入图片描述

添加数据行

可以先读取到某一行数据后,直接把这行数据添加到DataFrame中

#使用append()
#注意:这里使用append()之后,生成的是一个新的DF,原来的df没有改变,
#所以需要重新复制一下
#读取第2行数据,添加到df中,默认直接添加到最后一行
df = df.append(df.loc[1])

在这里插入图片描述

删除某一行数据

使用df.drop('标签索引')删除指定行,参数必须是便签索引,不是内部的整数索引。同时删除后生成的是新df,不改变原来的df对象
删除前:
在这里插入图片描述
删除后:

df = df.drop('10')
#df.drop(0)会报错
df

在这里插入图片描述

常用属性和方法:

DataFrame 的属性和方法,与 Series 相差无几,如下所示:
在这里插入图片描述
1:values:把 df中的表格数据以ndarray类型返回:
在这里插入图片描述
二维数组中的每一行就是df中的每一行数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值