iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python之Pandas使用详解
  • 897
分享到

Python之Pandas使用详解

pandaspython开发语言 2023-09-05 08:09:51 897人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

pandas 在数据分析当中,我们通常使用 Pandas 来做数据清理的工作。在真实的工作生活中,我们拿到的数据往往都是不整洁的,空值、重复值、无效值等等信息都会干扰我们的分析,此时我们就需要按部就班的完成数据的清理。数据清理是数据分析中非

pandas

数据分析当中,我们通常使用 Pandas 来做数据清理的工作。在真实的工作生活中,我们拿到的数据往往都是不整洁的,空值、重复值、无效值等等信息都会干扰我们的分析,此时我们就需要按部就班的完成数据的清理。数据清理是数据分析中非常重要的一步,也是非常繁琐的一步,当然,在你掌握了 Pandas 库之后,你就好像是得到了一把削铁如泥的宝剑,数据清理工作的效率会大大提高。

数据结构

Pandas 主要有两种数据结构,分别是 Series 和 DataFrame,他们分别表示一维的序列和二维的表结构。

维数名称描述
1Series可以看做有标签(默认是整数序列 RangeIndex;可以重复)的一维数组(同类型)。是 Scalars(标量) 的集合,同时也是 DataFrame 的元素。
2DataFrame一般是二维标签,尺寸可变的表格结构,具有潜在的异质型列。

Series

Series 是一个定长的字典序列。它相当于是两个 ndarray,一个代表 index,一个代表 values。

import pandas as pds = pd.Series(data, index=index)

此处的 data,可以是如下的数据类型:

  • python 中的 dict

  • 一个 ndarray

  • 一个标量,比如:4

而 index 的默认值是 0,1,2… 递增的整数序列。

指定 index

s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])print(s)>>>a   -0.595567b   -0.201314c    1.516812d    0.102395e   -1.009924dtype: float64

不指定 index

s1 = pd.Series(['a', 'b', 'c', 'd'])print(s1)>>>0    a1    b2    c3    ddtype: object

通过字典来创建 Series

d= {'a': 1, 'b': 2, 'c': 3}s2 = pd.Series(d)print(s2)>>>a    1b    2c    3Dtype: int64

DataFrame

DataFrame 是一个二维的数据结构,可以把它理解为数据表格或者是 sql 表,或者是由 Series 对象组成的字典。

d = {"Chinese": [80, 85, 90], "Math": [85, 70, 95], "English": [90, 95, 90]}df1 = pd.DataFrame(d)print(df1)df2 = pd.DataFrame(d, index=['zhangsan', 'lisi', 'wangwu'])print(df2)print(df2.columns, df2.index)>>>   Chinese  Math  English0       80    85       901       85    70       952       90    95       90          Chinese  Math  Englishzhangsan       80    85       90lisi           85    70       95wangwu         90    95       90Index(['Chinese', 'Math', 'English'], dtype='object') Index(['zhangsan', 'lisi', 'wangwu'], dtype='object')

通过 index 选择 DataFrame 中的数据

操作语法结果类型
选择某一列df[col]Series
通过标签选择某一行df.loc[label]Series
通过标签位置选择某一行df.iloc[loc]Series
切片获取某些行df[5:10]DataFrame
通过布尔向量获取某些行df[bool_vec]DataFrame

代码

print(df2['Chinese'], '\n')print(df2.loc['zhangsan'], '\n')print(df2.iloc[-1], '\n')print(df2[0:2], '\n')print(df2[df2>85], '\n')>>>zhangsan    80lisi        85wangwu      90Name: Chinese, dtype: int64 Chinese    80Math       85English    90Name: zhangsan, dtype: int64 Chinese    90Math       95English    90Name: wangwu, dtype: int64           Chinese  Math  Englishzhangsan       80    85       90lisi           85    70       95           Chinese  Math  Englishzhangsan      NaN   NaN       90lisi          NaN   NaN       95wangwu       90.0  95.0       90 

基本使用

读取/保存数据

读取数据

df = pd.read_csv("test.csv")print(df.head())print('\n')print(type(df))>>>       name   age     score0  zhangsan  30.0      80.01      lisi  20.0       NaN2    wangwu  25.0  100000.03   zhaoliu   NaN      32.04      maqi  33.0      60.0

保存数据

df.to_csv('my.csv')df.to_excel('my.xlsx')

查看数据

print(df.index, '\n')print(df.columns, '\n')print(df.to_numpy(), '\n')print(df.describe())>>>RangeIndex(start=0, stop=5, step=1) Index(['name', 'age', 'score'], dtype='object') [['zhangsan' 30.0 80.0] ['lisi' 20.0 nan] ['wangwu' 25.0 100000.0] ['zhaoliu' nan 32.0] ['maqi' 33.0 60.0]]              age          scorecount   4.000000       4.000000mean   27.000000   25043.000000std     5.715476   49971.337211min    20.000000      32.00000025%    23.750000      53.00000050%    27.500000      70.00000075%    30.750000   25060.000000max    33.000000  100000.000000

describe 是非常常用的函数,可以通过它来在整体上查看数据的全貌,有助于了解数据。

排序

按轴排序

print(df.sort_index(axis=1, ascending=False))>>>      score      name   age0      80.0  zhangsan  30.01       NaN      lisi  20.02  100000.0    wangwu  25.03      32.0   zhaoliu   NaN4      60.0      maqi  33.0

按数值排序

print(df.sort_values(by='score'))>>>       name   age     score3   zhaoliu   NaN      32.04      maqi  33.0      60.00  zhangsan  30.0      80.02    wangwu  25.0  100000.01      lisi  20.0       NaN

缺失值

查看缺失值

print(df.isnull(),'\n')print(df.isnull().any())>>>    name    age  score0  False  False  False1  False  False   True2  False  False  False3  False   True  False4  False  False  False name     Falseage       Truescore     Truedtype: bool

可以方便的看出数据中,哪些列是存在空值的。

删除/填充空值

df1 = df.copy()print(df1, '\n')print(df1.dropna(how='any'), '\n')print(df1.fillna(value=50))>>>       name   age     score0  zhangsan  30.0      80.01      lisi  20.0       NaN2    wangwu  25.0  100000.03   zhaoliu   NaN      32.04      maqi  33.0      60.0        name   age     score0  zhangsan  30.0      80.02    wangwu  25.0  100000.04      maqi  33.0      60.0        name   age     score0  zhangsan  30.0      80.01      lisi  20.0      50.02    wangwu  25.0  100000.03   zhaoliu  50.0      32.04      maqi  33.0      60.0

常用操作

重命名列

df1.rename(columns={'name': 'student'}, inplace = True)print(df1)>>>    student   age     score0  zhangsan  30.0      80.01      lisi  20.0       NaN2    wangwu  25.0  100000.03   zhaoliu   NaN      32.04      maqi  33.0      60.0

删除列/行

df1 = df1.drop(columns=['age'])print(df1, '\n')df1 = df1.drop(index=[1])print(df1)>>>    student     score0  zhangsan      80.01      lisi       NaN2    wangwu  100000.03   zhaoliu      32.04      maqi      60.0     student     score0  zhangsan      80.02    wangwu  100000.03   zhaoliu      32.04      maqi      60.0

去除重复值

df = df.drop_duplicates() # 去除重复行

修改数据格式

df1['score'].astype('str')

apply 函数的应用
apply 用来将函数应用到数据上。

df2 = df1['score'].apply(lambda x: x * 2)print(df2)>>>0       160.02    200000.03        64.04       120.0Name: score, dtype: float64

以上代码等价于

list(map(lambda x: x*2, df1['score']))>>>[160.0, 200000.0, 64.0, 120.0]

由此可以看出,apply 是一个高效且简洁的函数,可以快速把函数作用到每个元素之上。

直方图化

所谓的直方图化,就是函数 value_counts,该函数可以查看数据中,每列中有多少不同值,且各个不同值出现的次数

print(df, '\n')df3 = df.fillna(60)df3.loc[5] = ['qianba', 20, 80]  # 新增一行print(df3['score'].value_counts())>>>       name   age     score0  zhangsan  30.0      80.01      lisi  20.0       NaN2    wangwu  25.0  100000.03   zhaoliu   NaN      32.04      maqi  33.0      60.0 60.0        280.0        232.0        1100000.0    1Name: score, dtype: int64

表格合并及分组

合并

使用 concat 连接两个 Pandas 对象

print(df3, '\n')df4 = df3.copy()df3 = pd.concat([df3, df4], ignore_index=True)print(df3)>>>       name   age     score0  zhangsan  30.0      80.01      lisi  20.0      60.02    wangwu  25.0  100000.03   zhaoliu  60.0      32.04      maqi  33.0      60.05    qianba  20.0      80.0         name   age     score0   zhangsan  30.0      80.01       lisi  20.0      60.02     wangwu  25.0  100000.03    zhaoliu  60.0      32.04       maqi  33.0      60.05     qianba  20.0      80.06   zhangsan  30.0      80.07       lisi  20.0      60.08     wangwu  25.0  100000.09    zhaoliu  60.0      32.010      maqi  33.0      60.011    qianba  20.0      80.0

使用 merge 函数

基于某一列进行连接

left = pd.DataFrame({'key': ['foo', 'bar', 'loo'], 'lval': [1, 2, 3]})right = pd.DataFrame({'key': ['foo', 'bar', 'roo'], 'rval': [3, 4, 5]})print(left, '\n')print(right, '\n')print(pd.merge(left, right, on='key'))>>>   key  lval0  foo     11  bar     22  loo     3    key  rval0  foo     31  bar     42  roo     5    key  lval  rval0  foo     1     31  bar     2     4

内连接(innert),取键的交集

print(pd.merge(left, right, how='inner'))>>>   key  lval  rval0  foo     1     31  bar     2     4

还有左连接、右连接和外连接,你可以自己尝试下,看看有什么区别。

分组

所谓的分组,就是根据一些标准,将数据分解成一些组,将函数独立的应用到每个组上,最后将结果组合成数据结构。

df = pd.DataFrame({'A': ['foo', 'bar', 'bar', 'foo', 'foo', 'foo'],'B': ['one', 'two', 'three', 'one', 'two', 'two'],'C':[1, 2, 3, 4, 5, 6]})print(df, '\n')print(df.groupby('A').sum(), '\n')print(df.groupby('B').sum())>>>     A      B  C0  foo    one  11  bar    two  22  bar  three  33  foo    one  44  foo    two  55  foo    two  6       CA      bar   5foo  16         CB        one     5three   3two    13

也可以按照多列分组

print(df.groupby(['A', 'B']).sum())>>>            CA   B        bar three   3    two     2foo one     5    two    11

绘制简单图表

Pandas 同样提供绘制图表的功能

ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2018', periods=1000))print(ts, '\n')ts = ts.cumsum()  # 返回累计值ts.plot()>>>2018-01-01    1.0552292018-01-02    0.1014672018-01-03   -2.0835372018-01-04    1.1781022018-01-05   -0.084247                ...   2020-09-22   -4.3167702020-09-23   -0.8234942020-09-24    0.2151992020-09-25    1.0945162020-09-26    0.285788Freq: D, Length: 1000, dtype: float64 Out[94]:

图片

 

来源地址:https://blog.csdn.net/huanxiajioabu/article/details/131846118

--结束END--

本文标题: Python之Pandas使用详解

本文链接: https://www.lsjlt.com/news/394918.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python之Pandas使用详解
    Pandas 在数据分析当中,我们通常使用 Pandas 来做数据清理的工作。在真实的工作生活中,我们拿到的数据往往都是不整洁的,空值、重复值、无效值等等信息都会干扰我们的分析,此时我们就需要按部就班的完成数据的清理。数据清理是数据分析中非...
    99+
    2023-09-05
    pandas python 开发语言
  • python——pandas用法详解
    目录 一、pandas简介 1.1 pandas来源 1.2 pandas特点 1.3 pandas的两种主要数据结构 二、 pandas数据结构详解 2.1 pandas——series 2.1.1 由字典创建一个series 2.1....
    99+
    2023-09-22
    python pandas 开发语言
  • Python数据分析之pandas函数详解
    目录一、apply和applymap二、排序三、处理缺失数据一、apply和applymap 1. 可直接使用NumPy的函数 示例代码: # Numpy ufunc 函数 df...
    99+
    2024-04-02
  • python之sqlite3使用详解
    Python SQLITE数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身。它使用一个文件存储整个数据库,操作十分方便。它的最大优点是使用方便,功能相比于其它大型数据库来说,确实有...
    99+
    2023-01-31
    详解 python
  • Python库-pandas详解
    Python库-pandas详解 1. pandas介绍2. Series3. DataFrame3.1 DataFrame结构3.2 DataFrame属性与方法3.2 DataFrame索...
    99+
    2023-09-11
    python 数据挖掘 数据分析
  • Python Pandas数据分析之iloc和loc的用法详解
    Pandas 是一套用于 Python 的快速、高效的数据分析工具。它可以用于数据挖掘和数据分析,同时也提供数据清洗功能。本篇目录如下: 一、iloc 1.定义 iloc索引器用于...
    99+
    2024-04-02
  • python之pil的使用详解
    一:PIL功能介绍与安装 PIL,全称Python Image Library,主要作用是图像处理,可用于图片剪切、粘贴、缩放、镜像、水印、颜色块、滤镜、图像格式转换、色场空间转换、...
    99+
    2024-04-02
  • pandas应用实例之pivot函数详解
    目录1、pivot函数的定义2、pivot函数的说明3、pivo函数的参数4、pivot函数实例5、pivot函数在实际工作中解决的案例总结1、pivot函数的定义 pivot(in...
    99+
    2024-04-02
  • Python Pandas知识点之缺失值处理详解
    前言 数据处理过程中,经常会遇到数据有缺失值的情况,本文介绍如何用Pandas处理数据中的缺失值。 一、什么是缺失值 对数据而言,缺失值分为两种,一种是Pandas中的空值,另一种是...
    99+
    2024-04-02
  • Python Pandas学习之series的二元运算详解
    目录二元运算series 的二元运算series 上的二元运算方法二元运算 二元运算是指由两个元素形成第三个元素的一种规则,例如数的加法及乘法;更一般地,由两个集合形成第三个集合的产...
    99+
    2024-04-02
  • python中pandas常用命令详解
    pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提...
    99+
    2024-04-02
  • Python  Pandas教程之使用 pandas.read_csv() 读取 csv
    前言: Python 是一种用于进行数据分析的出色语言,主要是因为以数据为中心的 Python 包的奇妙生态系统。Pandas 就是其中之一,它使导入和分析数据变得更加容易。 大多数...
    99+
    2024-04-02
  • Python之如何使用pandas操作Excel表
    目录 1、前言 2、读取Excel 3、对Excel进行操作 3.1、获取行号、列名  3.2、获取单元格的值,并循环输出  3.3、对空值进行处理,替换  3.4、增加一列,并对新增列的第一行进行赋值 3.5、将修改后数据保存到原文档  ...
    99+
    2023-09-02
    pandas python 开发语言
  • Python之OptionParser模块使用详解
    目录介绍基本用法参数选项OptionParser()parser.add_option()生成帮助错误提示代码示例总结介绍 OptionParser是一个更方便、更灵活、更强大的用于...
    99+
    2024-04-02
  • 【Python】详解 Pandas 中的 read_csv()
    目录 read_csv() read_csv() pd.read_csv() 是 Pandas 中用于从 CSV 文件中读取数据的函数。它的语法如下: pd.read_csv(filepath_or_buffer, sep=",", ...
    99+
    2023-08-31
    pandas 数据分析 数据挖掘
  • pandas数据合并之pd.concat()用法详解
    目录一、简介二 、代码例1:上下堆叠拼接例2:axis=1 左右拼接一、简介 pd.concat()函数可以沿着指定的轴将多个dataframe或者series拼接到一起。...
    99+
    2024-04-02
  • Pandas库中iloc[]函数使用详解
    1 iloc[]函数作用 iloc[]函数,属于pandas库,全称为index location,即对数据进行位置索引,从而在数据表中提取出相应的数据。 2 iloc函数使用 df...
    99+
    2023-05-15
    Pandas iloc[ ]函数 Pandas iloc函数
  • Python入门之使用pandas分析excel数据
    目录1.问题2.方案2.1.安装2.2.读写文件2.3.数据操作2.4.数据筛选2.5.数据写入2.6.数据删除3.讨论 总结1.问题 在python中,读写excel数据方法很多,...
    99+
    2024-04-02
  • 详解Pandas中GroupBy对象的使用
    目录使用 Groupby 三个步骤将原始对象拆分为组按组应用函数AggregationTransformationFiltration整合结果总结今天,我们将探讨如何在 Python...
    99+
    2024-04-02
  • python学习之pandas
    #Pandas'''1,Pandas是Python的一个数据分析报包,该工具为解决数据分析任务而创建。2,Pandas纳入大量库和标准数据模型,提供搞笑的操作数据集所需的工具3.pandas提供大量能使我们快速便捷地处理数据的1函数方法4,...
    99+
    2023-01-31
    python pandas
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作