Pandas数据预处理的常用函数

前言

  以往项目中也有引入Pandas,用于有关数据处理和分析的环节,结合Python的Web开发,很容易开发出一款轻量BI系统。Pandas、Numpy、Scipy、matplotlib、scikit-learn和Jupyter Notebook结合使用,完全可以组成非常出色的数据分析与挖掘的生产环境工具,数据方面的应用,比matlab强不少,以至于本人也不断强化这方面的积累。单独拿出这方面技能,即可完成数据分析师的相关工作(又称提数工程师)。本文主要归档一些高频使用的预处理方面的函数,注意本文不涉及Pandas数据挖掘和数理统计方面的知识点(会在另外blog给出)。

1、读取数据文件

  读取数据的相关接口使用在pandas官网的document有非常详细的说明:在IO tools部分。pandas 不仅能读取基本常用的Excel、csv、文本,还可以读取hadoop文件,或者直接读取数据库等

1.1 读取excel数据文件
  • 加载Excel表,使用skiprows=1跳过首行
    并指定加载的列,注意数据文件的编码,默认utf-8,常用还有gb2312,根据自身数据而定。

    %%timeit
    raw_pd = pd.read_excel(data_file,,skiprows=1,usecols=[1,2,4],name=['item_id','item_name','price'],encoding='gb2312')
    181 ms ± 1.32 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
    

    这里可以为每个执行单元之前加入%%timeit,观察其耗时情况。

  • 加载Excel表,使用header=0跳过有列标题的首行
    除了使用skiprows=1可跳过首行,header=0也可以实现同样效果

    raw_pd = pd.read_excel(data_file,header=0,usecols=[1,2,4],name=['item_id','item_name','price'],encoding='gb2312')
    
  • 加载Excel表,首行为数据,不是列标题
    若该表第一行不是列标题行而是数据行,则需要指定header=None,否则读取后,第一行数据会被作为column name

    raw_pd=pd.read_excel(data_file,usecols=[1,2,4],name=['item_id','item_name','price'],header=None,encoding='utf-8')
    
  • 加载Excel表,读取前n行数据
    若数据文件大小为几个G,显然若直接全量读取,内存会挤爆,因此可以先读取前n看看。使用nrows=500,表示只读取前500行。

    raw_pd=pd.read_excel(data_file,usecols=[1,2,4],name=['item_id','item_name','price'],header=None, nrows=500,encoding='utf-8')
    
  • 加载Excel表,跳过所有空白行
    若有些表出现了不定数量的空白行,可以使用skip_blank_lines=True处理

    raw_pd=pd.read_excel(data_file,usecols=[1,2,4],name=['item_id','item_name','price'],header=None,skip_blank_lines = True, nrows=500,encoding='utf-8')
    
  • 加载Excel表,通过自定规则,跳过满足规则的行
    例如跳过有值为单数的行,定义更复杂的函数,用于跳过满足复杂规则的行。不过,除非这些行很多,否则可以在读取后,直接用正则drop掉来得更有效。

      pd.read_csv(data_file, skiprows=lambda x: x % 2 != 0)
    
1.2 读取csv文件

  读取csv文件跟读取Excel文件区别不大,这里简单给出示例

raw_pd=pd.read_csv(data_file,usecols=[1,2,4],name=['item_id','item_name','price'],header=None,nrows=500,encoding='gb2312')

读取文件,需要注意的地方一般是选择编码,数据文件的编码决定读取数据后,是否正常显示。

1.3 读取数据时,跳过尾行

有些报表一般会在表(例如财务系统导出)的后几行写上制表人、制表日期
这里要注意,若使用c engine,则无法使用从尾部跳过数据的功能:

skipfooter : int, default 0

Number of lines at bottom of file to skip (unsupported with engine=’c’).

raw_pd=pd.read_csv(data_file,usecols=[1,2,4],name=['item_id','item_name','price'],header=None, skipfooter=5,encoding='gb2312')
1.4 读取特定分割符的数据文件

read_csv也可以读取任意文本文件,只需要指定列分割符。

raw_pd=pd.read_csv('data_file.txt',sep='||',encoding='utf-8')
1.5 使用c或者python作为读取文件的引擎

pd.read_*** 方法默认使用python解释器作为读取文件engine,若数据文件大,可选择c engine

engine : { 'c'

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Pandas提供了许多便利的数据预处理函数,比如fillna()、drop()、replace()、query()、isin()、to_datetime()、groupby()、stack()和unstack()等等。 ### 回答2: Pandas是一个Python库,用于数据分析和数据预处理,提供了许多方法和函数来处理和转换数据。以下是一些常用Pandas数据预处理方法和函数: 1. 缺失值处理:常用的方法有fillna()函数填充空值,dropna()函数删除含有空值的行或列。 2. 数据重复处理:drop_duplicates()函数可以删除数据集中的重复行。 3. 格式转换:使用astype()函数将数据类型转换为其他类型,例如将字符串转换为数值型。 4. 数据合并:使用concat()函数可以将多个DataFrame合并成一个,并根据指定的轴进行连接。 5. 列重命名:使用rename()函数可以为DataFrame中的某一列或多个列重命名。 6. 列删除:使用drop()函数可以删除DataFrame中的某一列或多个列。 7. 数据排序:使用sort_values()函数按指定的列对DataFrame进行排序。 8. 数据归一化:使用MinMaxScaler()或StandardScaler()函数可以对数值型数据进行归一化处理。 9. 数据分箱:使用cut()函数可以将连续变量转换为分类变量,将数据进行分组。 10. 数据抽样:使用sample()函数可以从DataFrame中随机抽取指定数量的数据样本。 以上只是Pandas数据预处理方法的一些常见示例,还有许多其他功能和函数可以根据数据的具体需求进行调用和应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值