一些奇怪的Pandas使用
本文最后更新于:2024年8月11日 晚上
Pandas
对象
Series
Series对象是Pandas的同类的一维数组对象集合,它包括整数0索引
、数据本身
、数据类型标识
,输出时会按照以下格式输出:
Series创建
创建Series对象的方式如下:
1 |
|
- data:储存的数据,可以是列表或
ndarry
- index:索引值,默认为
np.arrange(n)
- dtype: 类型说明,可以自动判断,使用列表可以传入索引,要求长度至少大于数据长度,空值填充NaN
- copy:对data进行拷贝,默认为False
创建空Series对象
1 |
|
介绍用dict
创建Series
,使用==字典创建==时会按照==键==建立索引
不传递索引
1 |
|
传递索引
1 |
|
数据为恒常数
如果数据是恒常数,必须传入索引,这样才知道有多少个常熟
1 |
|
Series访问
得益于建立了索引,这个数据集可以使用索引访问,也保留了下标访问的方式,返回的是数据本身
1 |
|
切片访问
类似于列表,数据集也是可以切片的,返回的还是Series
对象
1 |
|
多索引访问:需要使用包含索引的列表去访问,返回的还是Series
对象
1 |
|
像字典一样,若没有这个索引,则触发KeyError异常
常用方法
名称 | 属性 |
---|---|
axes | 以列表的形式返回所有行索引标签。 |
dtype | 返回对象的数据类型。 |
empty | 判断空值 |
ndim | 返回输入数据的维数,Series是一位数据,只返回1 |
size | 返回输入数据的元素数量,即长度 |
index | 返回一个RangeIndex对象,用来描述索引的取值范围 类似于RangeIndex(start=0,stop=5,step=1) |
values | 以数组的形式返回Series中的数据(不反回索引) |
数据检视
使用*.head(n)
返回n
行头数据,默认是5行
使用*.tail(m)
返回m
行尾数据,默认是5行
返回的内容也是Series
对象
使用*.isnull()
和*.notnull
进行缺失值检测
返回的是一个布尔值组成的Series
对象,他的索引就是各个值的所在位置,值即为是否是确实值
DataFrame
有一维数据结构,肯定得有一个二维数据结构,DataFrame
就是一个二维数据结构
它的行、列都有相应的行标签、列标签,而且是一个==异构==数据表
==异构==:表格中的元素可以是不同类型,就跟Excel一样
隐式标签:就是常见的从0开始的下标访问
显示标签:自己给他们定义一个访问标签
列标签甚至还能是不同的数据类型,虽然不推荐这么做
对象创建
1 |
|
参数名称 | 说明 |
---|---|
data | 输入的数据,可以是 ndarray,series,list,dict,标量以及一个 DataFrame。 |
index | 行标签,如果没有传递 index 值,则默认行标签是 np.arange(n),n 代表 data 的元素个数。 |
columns | 列标签,如果没有传递 columns 值,则默认列标签是 np.arange(n)。 |
dtype | dtype表示每一列的数据类型。 |
copy | 默认为 False,表示复制数据 data。 |
直接使用pd.DateFrame()
可以创建空的对象
单列表创建
可以使用一个列表或者嵌套列表来创建DataFrame对象
1 |
|
嵌套列表创建
这里还传入了一个==列索引==
1 |
|
你还可以修改数值的数据类型,保留一位小数点,上面的Line3改为df = pd.DataFrame(data,columns=["Name","Age"],dtype=float)
即可,Age将自动出现小数点
嵌套字典创建
1 |
|
自然,我们也可以分配==行索引==
1 |
|
列表套字典创建
1 |
|
当然,可以建立一个行索引df = pd.DataFrame(data,index=[“Line1”,”Line2"])
更高级的,可以把字典==键==当==列索引==,当找不到这个列时,所有行的值自动置空
(NaN
),没被选中的键则自动==丢弃==
1 |
|
从Series对象构建
因为Series是一维数组,因此只能当成行或列,如下:
1 |
|
数据访问
pass
Excel
写入
使用to_excel()
可以将一个DataFrame
对象写入目标表格中,完整的写法如下:
1 |
|
本来只想解释部分参数,但是全部都很重要:
参数名称 | 描述说明 |
---|---|
excel_wirter | 文件路径或者 ExcelWrite 对象。 |
sheet_name | 指定要写入数据的工作表名称。 |
na_rep |
缺失值的表示形式。 |
float_format | 它是一个可选参数,用于格式化浮点数字符串。 |
columns | 指要写入的列。 |
header | 写出每一列的名称,如果给出的是字符串列表,则表示列的别名。 |
index | 表示要写入的索引。 |
index_label | 引用索引列的列标签。如果未指定,并且 hearder 和 index 均为为 True,则使用索引名称。如果 DataFrame 使用 MultiIndex,则需要给出一个序列。 |
startrow | 初始写入的行位置,默认值0。表示引用左上角的行单元格来储存 DataFrame。 |
startcol | 初始写入的列位置,默认值0。表示引用左上角的列单元格来储存 DataFrame。 |
engine | 它是一个可选参数,用于指定要使用的引擎,可以是 openpyxl 或 xlsxwriter。 |
简单介绍[废弃]
Excel读取
打开Excel文件,读取表sheet
,以第1行为表头(从0开始)
1 |
|
要求表格名称相同,默认读取第一张表,也可以使用从0开始
读取表格编号
基本行操作
读取前n
行
1 |
|
读取行的方法有两种,一种是按索引读取*.loc
一种是按从0开始的下标索引*.iloc
,这里主要说明下标索引
返回的内容是该行的包含所有列的对象
读取第二行
1 |
|
读取1~4行
1 |
|
修改行(或添加新行数据)
跟字典一样,通过下标访问,通过赋值修改,一般要求列表元素数量跟列数量一样多
1 |
|
基本列操作
读取指定列:
1 |
|
筛选列中的数据:
1 |
|
读取多列:
1 |
|
基本单元格
读取某两列下的第3行到第4行
1 |
|
一种简写方法:
访问第3~4行,读取2,4列
1 |
|
删除
删除行:
删除第3、第4行,inplcae
:要求在原表修改,否则会返回一个新表对象
1 |
|
删除列:
1 |
|
Excel写入
将缓存表输出成文件,index
:不建立索引
1 |
|