dataframe iloc_了解pandas的DataFrame

摘要:通过pandas的DataFrame,实现平面文件表格内容的读写,使用智能切片loc等获得子集信息。

一、概述

a1ed1d324924159f3527a0cdf162720c.png

图1-1

Pandas是基于numpy的一套模块,所以也拥有numpy强大的分析功能。Pandas 包括1维Series和2维DataFrame2个主要的数据结构,因为经常处理表格数据的需要,本文重点了解下DataFrame的数据读写和切片部分内容。

示例文件sales1.csv内容:

b98e68a231dc2589f28c04a0bd07f201.png

图1-2

Pandas读取后,如果未明确指定索引名称,在dataframe中会自动新增数值的索引列(红色框部分):

fccc717a1284d82af94763fbf7f31a4b.png

图1-3

二、功能展示

首先,完成模块的导入:

import numpy as np

import pandas as pd

1、文件读写

Pandas可以轻松完成对平面文件(CSV和分隔)、Excel文件的数据读取和保存工作。

1.1、 读写编码

import numpy as npimport pandas as pd#################输入文件input_file = r'E:pytestsales1.csv'#输出文件output_file = r'E:pytestoutput.csv'#1、读取csv文件data = pd.read_csv(input_file)print(data)#2、修改,将sex列的girl修改为‘女’,其他修改为‘男’data['sex']=np.where(data['sex']=='girl','女','男')#3、写出,设置写出字符编码为'utf-8_sig',避免中文乱码# index=None表示不需要写出索引列data.to_csv(output_file,encoding='utf-8_sig',index=None)

1.2、 运行结果

63043519a3c07f32d50f428575fc614c.png

图2-1

写出文件内容output.csv:

6836be6d7b5900e9cf231624f99aba49.png

图2-2

2、熟悉文件的结构

2.1维度查看

Print(data.shape)

7bb17d7fa4c52e16508560ef6107c96a.png

图2-3

2.2结构内容查看

打开的文件可能比较大,可以输出几行查看内容类型,以便更好的调试

print(data.head(3)):

name age sex

0 li1 10 girl

1 zhang1 11 boy

2 li2 12 girl

2.3、loc[row,col]行列切片

重点是体验对应的分隔符位置

1)row的连续格式“loc[row1:row2]”,表示row1到row2的连续行。

例如,print(data.loc[1:3])

bade3e824b4b9436c3375b20bd212879.png

图2-4

2)row的不连续格式“loc[[row1,row2]]”,表示row1,row2不连续行。

例如,print(data.loc[[1,3]])

815454f41ef6920bbaed7bc40165269f.png

图2-5

3)col的连续格式“loc[:,col1:col2]”,表示col1到col2的连续行;“:,”表示行标识,默认为所有行。

例如,print(data.loc[:,'A':'C']),进行列的连续输出,需要列名称具备连续标识才行;类似age:sex等不连续的是无法执行的,所以本示例专门将列标识更改为A、B、C的样式,来进行展示

61315f69d40b5ced7ba9371ea144a016.png

图2-6

4)col的不连续格式“loc[:,col1:col2]”,表示col1到col2的连续行。

例如,print(data.loc[:,['name','sex']])

a4ec757d77510a476ac19f0c3d830bf8.png

图2-7

c7a324023aca0aa544580c1b1e768554.png

图2-8

5)row和col共同作用下,行连续方式 “loc[row1:row2,[col1,col2]]”。

例如,获取索引为1-3连续行对应的name、sex的内容

print(data.loc[1:3,['name','sex']])

9a94319b88ef74633f6767e457282e85.png

图2-9

6)row和col共同作用下,行不连续方式“loc[[row1,row2],[col1,col2]]”。

例如,获取索引为1/3不连续行对应的name、sex的内容

print(data.loc[[1,3],['name','sex']])

b9317681ee0928274d97209749372f4e.png

图2-10

7) row和col共同作用下,获取指定单元格内容“loc[row, col]”。

例如,获取索引为1对应的name的单元格内容

print(data.loc[1,'name'])

8f384520574fd6a794a1af321188c20f.png

图2-11

8)iloc格式

iloc与loc一致,区分在于

A)、loc使用索引标签定位;

B)、iloc的数字不再是索引标签名称,而是数据所在的位置,从0开始。

例如

3716b5f164d02317fed80b7fc2bb9974.png

图2-12

9)ix格式

ix实现按索引标签和位置混合提取数据,也即ix是loc和iloc的混合体,但是已经被废弃,告警说明如下

78064ea423ca81ff27ef9e72caae8978.png

图2-13

2.3变更数据格式

表格读取经常为字符型数据,转换为整数格式

data['age'] = data['age'].astype('int')

3、数据筛选

Pandas的筛选,实际就是将对应条件植入row,col的位置,实现对应的检索

dda499021a680f33ea96c84ca5dfabf7.png

图2-14

4、数据的分析

4.1、数据筛选

Pandas的真正强大,是因为继承自numpy,可以轻易实现数据的各项分析,例如通过条件筛选可以直接获取对应的数据平均值:

#筛选age大于12,sex为girl的行print(data.loc[((data['age']>12)&(data['sex']=='girl'))])#筛选age大于12,sex为girl的行,然后对满足条件的行的age求评价print(data.loc[((data['age']>12)&(data['sex']=='girl'))].age.mean())
62149f9ab461697cad764de7079bef54.png

图2-15

4.2、数据的分类汇总

Pandas的groupby可以轻易实现类似关系数据库的分类汇总。

例如,以sex进行分类汇总print(data.groupby('sex').count()):

5a939178aad8168b6e861385186a9e25.png

图2-16

多字段的汇总

b65534311cf22a61b0dc4f701f562cc8.png

图2-17

三、总结

Pandas读取文件后,进行的子集切片是基本操作;pandas的强大,实际源于他的统计分析,可以通过pandas官网文档获取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值