• 第五章-Python数据处理工具Pandas--1


    Pandas 模块的核心操作对象就是 序列数据框 。序列可以理解为数据集中的一个字段 , 数据框是指含有至少两个字段(或序列)的数据集。

    序列和数据框的构造

    一.构造序列
    可以通过Series函数将列表、字典和一维数组转换为序列。
    通常情况下,默认序列的样式为两列,第一列为序列的行索引,自动从0开始,第二列是序列的实际值。

    通过字典构造的序列,第一列可以自定义行名称,第二列是序列的实际值。

    对序列的操作,一般情况下,如果是对序列进行数学函数计算,首选numpy方法;若是对序列做统计运算,一般首选序列的方法,例如像偏度、峰度等等,numpy是没有这些函数的。

    在这里插入图片描述

    二。构造数据框

    数据框实际上就是一个数据集,数据集的行代表每一条观测,数据集的列代表各个变量。

    和其他的数组、序列相比,数据框的优势是可以存放不同数据类型的序列。

    可以通过列表、字典、二维数组构造数据框。字典构造是可以命名具体的列名称的。
    在这里插入图片描述

    外部数据的获取

    手工构造数据框是不现实的,毕竟数据量太大,因此我们更多的是通过Python读取外部的数据集(可能包含在csv 、 txt 、 excsl 、 数据库等中)。

    一.文本文件的读取

    如果需要读取 txt 或 csv 格式中的数据,一般使用read_table 或是 read_csv函数,里面的具体参数意义如下:

    pd.read_table(filepath_or_buffer=,sep=‘\t’,header=‘infer’,names=None,index_col=None,
    usecols=None,dtype=None,converters=None,skiprows=None,
    skipfooter=None,nrows=None,na_values=None,skip_blank_lines=True,
    parse_dates=False,thousands=None,comment=None,encoding=None)

    filepath_or_buffer:指定txt 或csv 文件所在的具体路径。
    sep:指定原数据集中各字段之间的分隔符,默认为Tab制表符。
    header:是否需要将第一行作为表头,默认将第一行作为字段名称。
    names:如果原数据集中没有字段,可以通过该参数在数据读取时给数据框添加具体的表头。
    index_col:指定原数据集中的某些列作为数据框的行索引。
    usecols:指定需要读取原数据集中的哪些变量名。
    dtype:读取数据时,可以为原数据集的每个字段设置不同的数据类型。
    converters:通过字典格式,为数据集中的某些字段设置转换函数。
    skiprows:数据读取时,指定需要跳过原数据集开头的行数。
    skipfooter:数据读取时,指定需跳过原数据集末尾的行数。
    nrows:指定读取的行数。
    na_values:指定原数据集中哪些特征值作为缺失值。
    skip_blank_lines:读取数据时,是否需要跳过空白行,默认是True。
    thousand:指定原数据集中的千分位符。
    comment:指定注释符,读取数据时,如果碰到行首指定的注释符,则跳过该行。
    encoding:如果文件中有中文,有时需要指定字符编码。

    在这里插入图片描述
    这里举个例子,对于上述文档,我们想要提取员工的收入信息,代码为:

    在这里插入图片描述
    二.excel表格获取

    pd.read_excel(io,sheet_name=0,header=0,skiprows=None,skipfooter=0,
    index_col=None,names=None,parse_dates=False,parse_cols=None,
    na_values=None,thousands=None,convert_float=True)

    io:指定电子表格的路径。
    sheet_name:指定需要读取电子表格的第几个sheet。
    skiprows:指定跳过的开始行数。
    skip_footer:指定跳过的末尾行数。
    index_col:指定用哪些列作为数据框的行索引。
    names:如果原数据集中没有字段,可以通过该参数在数据读取时给数据框添加具体的表头。
    parse_cols:指定需要解析的字段。
    thousands:指定原数据集中的千分位符。
    convert_float:默认将所有的数值型转换为浮点型。
    converters:通过字典的形式,指定某些列需要转换的形式。

    在这里插入图片描述

    三.数据类型转换和描述统计

    在这里插入图片描述

    可以看到,这里我们对xlsx中的数据进行查看,一共包含11125条记录和7个变量,除了二手车价格和公里数时浮点型,其他的都是字符型变量。

    但是我们其实是希望上牌时间Boarding_time应该为日期型。

    具体操作如下:
    在这里插入图片描述

    数据的描述性分析:
    在这里插入图片描述

    数值型变量的统计分析,如偏度值和峰值:
    在这里插入图片描述

    离散型变量的统计分析:
    在这里插入图片描述

    可以看到,对于离散型变量,运用describe只能看到那个离散型变量属于top值,并不知道各个离散值的频次,计算频次和频率的方法如下:

    在这里插入图片描述

    可以看到这里是没有专门的索引的。若是想把行标签设置为数据框中的列,可以使用reset_index的方法:

    在这里插入图片描述

    四.字符与日期数据的处理

    在这里插入图片描述

    可以看到,这就是等待我们去处理的数据,

    现实生活中,我们可能存在这样的一些需求:
    1.更改birthday和tel的数据类型;
    2.根据birthday和start_work来新增年龄和工龄两列;
    3.如何将手机号中间四位隐藏起来;
    4.如何获取到邮箱信息的域名并新增一列;
    5.如何基于other字段取出每个人员的专业信息。

    针对其进行处理的代码如下:

    在这里插入图片描述

    对于其中的时间函数,除了常见的年月日、时分秒,还有其他一些常见的用法:

    date:返回日期
    time:返回时间
    dayofyear:返回年中第几天
    weekofyear:返回年中第几周
    dayofweek:返回周几(0~6)
    day_name():返回具体的周几名称
    quarter:返回第几极度
    days_in_month:返回月中第几天

    具体实例如下:
    在这里插入图片描述

  • 相关阅读:
    [Linux] GRUB引导 学习笔记(一)
    学习ASP.NET Core Blazor编程系列十四——修改
    Android 12 打开网络ADB并禁用USB连接ADB
    快速入门JWT+Redis实现Token验证
    云原生|kubernetes 你真的学废了吗---实战k8s 二(命令行创建各类资源)
    [计算机网络]套接字编程
    【代码随想录】栈与队列专栏(java版本)
    自编译 micropython ESP32固件指南以及16MB固件分享
    面试高频的ES6中的Map和Set数据结构详解
    广东海颐开发笔试编程题回顾
  • 原文地址:https://blog.csdn.net/qq_43504141/article/details/127105202