首页 > 其他分享 >数据预处理-DataFrame切片

数据预处理-DataFrame切片

时间:2024-10-18 15:11:28浏览次数:7  
标签:loc index DataFrame 切片 Alley iloc data 预处理

此Blog仅作为日常学习工作中记录使用,Blog中有不足之处欢迎指出

以kaggle中房屋预测的训练集为例,说明DataFrame切片常用操作

一、读入数据

import numpy as np
import pandas as pd

file_path = '***\kaggle_house_pred_train.csv'
data = pd.read_csv(file_path)

data.columns # 列名

输出:

Index(['Id', 'MSSubClass', 'MSZoning', 'LotFrontage', 'LotArea', 'Street',
       'Alley', 'LotShape', 'LandContour', 'Utilities', 'LotConfig',
       'LandSlope', 'Neighborhood', 'Condition1', 'Condition2', 'BldgType',
       'HouseStyle', 'OverallQual', 'OverallCond', 'YearBuilt', 'YearRemodAdd',
       'RoofStyle', 'RoofMatl', 'Exterior1st', 'Exterior2nd', 'MasVnrType',
       'MasVnrArea', 'ExterQual', 'ExterCond', 'Foundation', 'BsmtQual',
       'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinSF1',
       'BsmtFinType2', 'BsmtFinSF2', 'BsmtUnfSF', 'TotalBsmtSF', 'Heating',
       'HeatingQC', 'CentralAir', 'Electrical', '1stFlrSF', '2ndFlrSF',
       'LowQualFinSF', 'GrLivArea', 'BsmtFullBath', 'BsmtHalfBath', 'FullBath',
       'HalfBath', 'BedroomAbvGr', 'KitchenAbvGr', 'KitchenQual',
       'TotRmsAbvGrd', 'Functional', 'Fireplaces', 'FireplaceQu', 'GarageType',
       'GarageYrBlt', 'GarageFinish', 'GarageCars', 'GarageArea', 'GarageQual',
       'GarageCond', 'PavedDrive', 'WoodDeckSF', 'OpenPorchSF',
       'EnclosedPorch', '3SsnPorch', 'ScreenPorch', 'PoolArea', 'PoolQC',
       'Fence', 'MiscFeature', 'MiscVal', 'MoSold', 'YrSold', 'SaleType',
       'SaleCondition', 'SalePrice'],
      dtype='object')
data.index #当前行标签为0~1460(最后一位为1459,有1460个元素),跨度为1的列表

输出:

RangeIndex(start=0, stop=1460, step=1)

二、DataFrame切片常用方法

DataFrame常用的切片方法有以下:

假设:df 为DataFrame类型

①通过行列名、行列索引 df[label]df[index]df[start_index:end_index]

②通过loc函数进行行列切片,df.loc[start_index:end_index,start_col:end_col]

③通过iloc函数进行行列切片,df.iloc[start_index:end_index,start_col:end_col]

写在前面,我当时学习的时候,会很困惑loc函数和iloc函数有什么区别?现提前说明,在后续的例子中去体会。

loc是location的意思,iloc中的i是integer的意思。显而易见,loc函数接收行列索引(名称)的,iloc函数接收的是第几行(下标);此外,loc函数是闭区间切片,iloc函数是左闭右开方式切片。

第①中方法能够实现的,loc函数和iloc函数也可以实现,因此作中介绍loc函数和iloc函数,进队第①种方式简要介绍。

三、示例

  1. DateFrame切片

    对于第①种方式,当是df[index]时,是针对列进行取值,index可以是单个列索引、多个列索引

    data['SalePrice']
    data[['Id','SalePrice']] #index = ['Id','SalePrice']
    

    输出:

    当是df[start_index:end_index]时,是针对进行取值,且是左闭右开

    DataFrame不存在以下几种类型的切片:df[start_index:end_index,start_col:end_col]、针对列的df['start_col':'end_col']、针对行的df[[index1,index2,...]]

    注:在实际应用中,数据量通常会比较大,因此,通常会存在行索引和行下标一致的情况,即0~len(data)。

  2. loc函数

    loc函数,根据行列索引进行切片,形式为:df[indexs,columns],其中indexs,columns形式为

    单个行列索引、行列索引列表、行列布尔索引。其中,columns可以省略,但是indexs不可省略

    data.loc[:,['Id','Alley']] # 切片获取Id和Alley列
    data.loc[:,'Id':'Alley'] # 切片获取Id到Alley列
    data.loc[1:5,['Id','Alley']] # 切片获取1到5行,Id到Alley列
    data.loc[1:5,'Id':'Alley'] # 切片获取1到5行,Id到Alley列
    data.loc[1:5,:] # 切片获取1到5行,所有列
    data.loc[[0,2,3],['Id','Alley']] # 切片获取0,2,3行,Id到Alley列
    data.loc[0,'Id':'Alley'] # 切片获取0行,Id到Alley列
    data.loc[[0,2,3]] # 切片获取0,2,3行,所有列
    data.loc[0,'MSZoning'] # 切片获取0行MSZoning列的值
    
    data.loc[data['Alley'].isna(),:] # 切片获取Alley列的缺失行
    data.loc[:,data.dtypes != 'object'] # 切片获取非object类型的列,常用于数据处理时,将数值类型数据切出来进行归一化
    
  3. iloc函数

    iloc函数,根据下标值进行切片,形式为:df[indexs,col_indexs],其中indexs,col_indexs形式为单个行列下标,行列下标列表,行列布尔索引

    data.iloc[0,2] # 切片获取0行2列的值
    data.iloc[0,2:5] # 切片获取0行2到4列的值
    data.iloc[0:4,2:5] # 切片获取0到4行2到4列的值
    data.iloc[0:4,[2,3]] # 切片获取0到4行2和3列的值
    data.iloc[[0,3,6],[2,3]] # 切片获取0,3,6行2和3列的值
    data.iloc[[2,3]] # 切片获取2,3行所有列的值
    data.iloc[:,[2,3]] # 切片获取所有行2,3列的值
    
    # 布尔索引形式与loc函数类似
    

附件:数据集地址

标签:loc,index,DataFrame,切片,Alley,iloc,data,预处理
From: https://www.cnblogs.com/AfroNicky/p/18474303

相关文章

  • [1070] Set a CRS to a GeoDataFrame from another GeoDataFrame’s CRS
    Certainly!TosettheCoordinateReferenceSystem(CRS)ofoneGeoDataFrametomatchanotherGeoDataFrame’sCRS,youcanfollowthesesteps:AssumeyouhavetwoGeoDataFrames:gdf1andgdf2.MakesurebothGeoDataFrames(gdf1andgdf2)arealreadyloaded......
  • 对带有指针类型的切片进行循环时避坑
    func(sp*scrapePool)sync(targets[]*Target){//加锁 sp.mtx.Lock() defersp.mtx.Unlock() var(//target标记 uniqueTargets=map[uint64]struct{}{}//采集周期 interval=time.Duration(sp.config.ScrapeInterval)//采集超时时间 timeout......
  • 各种图像预处理及效果图
    2.3图像的预处理预处理是图像处理中很关键的一步,预处理的好坏会直接影响最终结果。所以好的预处理可以减少噪声、光照、遮挡等因素的影响,使得实验数据更清晰,提高最终的识别精度和识别速度。2.3.1图像增强猪场一般情况下光线偏暗,对比度较低,对猪只的行为识别以及身份识别的难......
  • 倾斜摄影切片怎么做?这种切片方式简单方便还免费!
    倾斜摄影是一种从多个角度(通常是垂直、斜45度)拍摄地面或建筑物的影像技术,通过结合这些不同视角的照片,可以生成具有真实感的三维模型。倾斜摄影通常用于城市建模、地形勘测和测绘等领域,能够准确还原建筑物和地形的立体结构。然而,倾斜摄影生成的三维数据体量庞大,直接展示时面临渲染......
  • GeoServer-发布WMTS切片服务
    转自:https://blog.csdn.net/weixin_58424264/geoServer: http://localhost:8080/geoserver/web/?1默认账号:admin密码:geoserver发布WMTS服务步骤1.新建gridsets,选择合适的层数以及坐标系   2.新建工作区  仿照别人的设置  3.新建数据存储,根据资源类型找......
  • 数据处理和分析之数据预处理:异常值处理(Outlier Detection):异常值处理策略:删除与修正
    数据处理和分析之数据预处理:异常值处理(OutlierDetection):异常值处理策略:删除与修正异常值检测的重要性异常值的定义异常值(Outliers),在统计学中,指的是数据集中显著偏离其他观察值的数值。这些数值可能由于测量错误、数据录入错误、实验异常或其他非典型条件产生。异常值......
  • 数据处理和分析之数据预处理:异常值处理(Outlier Detection):统计学方法检测异常值
    数据处理和分析之数据预处理:异常值处理(OutlierDetection):统计学方法检测异常值异常值的概念与重要性异常值的定义在数据集中,异常值(Outliers)指的是那些显著偏离其他观测值的数值。这些数值可能由于测量错误、数据录入错误、实验异常或其他非典型因素产生。异常值的存在......
  • 数据处理和分析之数据预处理:异常值处理(Outlier Detection):基于密度的异常值检测方法
    数据处理和分析之数据预处理:异常值处理(OutlierDetection):基于密度的异常值检测方法数据处理和分析之数据预处理:异常值处理(OutlierDetection):基于密度的异常值检测方法引言异常值检测的重要性在数据科学和机器学习领域,异常值检测是数据预处理中的一个关键步骤。异......
  • 数据预处理
    数据清理缺失值处理常见方法分为三类:数据删除,数据插补,不处理数据插补:最为常见的是数据插补。插补方法取均值/中位数/众数插补使用固定值(政府等发布的可信数值)最近邻插补(根据相近数值取平均或者时间序列预测缺失数据)回归分析(工作量大)插值法(高端,可以使用)......
  • 地图切片软件神器推荐:五款GIS工具优缺点全解析
    地图切片(MapTiling)是指将大型地图或影像数据按照一定的规则切割成多个较小的图块(称为瓦片),并根据缩放级别和用户请求逐步加载这些瓦片,从而提升地图在网络或应用中的显示速度和效率。地图切片技术广泛应用于网络地图服务(如GoogleMaps、BingMaps)以及地理信息系统(GIS)中,为用户提供流......