返回顶部
首页 > 资讯 > 后端开发 > Python >Python pandas的八个生命周期总结
  • 290
分享到

Python pandas的八个生命周期总结

2024-04-02 19:04:59 290人浏览 独家记忆

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

摘要

这里从八个pandas的数据处理生命周期,整理汇总出pandas框架在整个数据处理过程中都是如何处理数据的。 也就是从pandas的数据表对象以及数据汇总、数据统计等等直到数据导出的

这里从八个pandas的数据处理生命周期,整理汇总出pandas框架在整个数据处理过程中都是如何处理数据的。

也就是从pandas的数据表对象以及数据汇总、数据统计等等直到数据导出的八个处理过程来完成pandas使用的汇总处理。

首先,需要准备好将python非标准库导入进来,除了pandas之外一般伴随数据分析处理使用的还有numpy科学计算库。

# Importing the pandas library and giving it the alias pd.
import pandas as pd

# Importing the numpy library and giving it the alias np.
import numpy as np

1、数据表对象(DataFrame)

在pandas的数据分析处理中,主要依赖的是对DataFrame对象的处理来完成数据的提取、汇总、统计等操作。

那么在初始化DataFrame对象的时候有两种方式,一种是直接读取excel、csv文件获取数据后返回DataFrame数据对象。

# Reading the csv file and converting it into a dataframe.
dataframe_csv = pd.DataFrame(pd.read_csv('./data.csv'))

# Reading the excel file and converting it into a dataframe.
dataframe_xlsx = pd.DataFrame(pd.read_excel('./data.xlsx'))

另一种则是需要自己创建DataFrame对象的数据,将字典等类型的Python对象直接初始化为DataFrame数据表的形式。

# Creating a dataframe with two columns, one called `name` and the other called `age`.
dataframe = pd.DataFrame({"编程语言": ['Java', 'Python', 'c++'],
                          "已诞生多少年": [23, 20, 28]},
                         columns=['编程语言', '已诞生多少年'])

2、数据表(DataFrame)结构信息

通过DataFrame对象内置的各种函数来查看数据维度、列名称、数据格式等信息。

# Creating a dataframe with two columns, one called `name` and the other called `age`.
dataframe = pd.DataFrame({"编程语言": ['Java', 'Python', 'C++'],
                          "已诞生多少年": [23, 20, 28]},
                         columns=['编程语言', '已诞生多少年'])

【加粗】dataframe.info()

查看数据表的基本信息展示,包括列数、数据格式、列名称、占用空间等。

dataframe.info()

# <class 'pandas.core.frame.DataFrame'>
# Index: 0 entries
# Data columns (total 2 columns):
#  #   Column  Non-Null Count  Dtype
# ---  ------  --------------  -----
#  0   编程语言    0 non-null      object
#  1   已诞生多少年  0 non-null      object
# dtypes: object(2)
# memory usage: 0.0+ bytes

【加粗】dataframe.columns

查看DataFrame对象的所有列的名称,并返回数组信息。

print('显示所有列的名称是:{0}'.fORMat(dataframe.columns))

# 显示所有列的名称是:Index(['编程语言', '已诞生多少年'], dtype='object')

【加粗】dataframe['列名'].dtype

查看DataFrame对象中某一列的格式dtype是什么。

print('列名(编程语言)的格式是:{0}'.format(dataframe[u'编程语言'].dtype))

# 列名(编程语言)的格式是:object

【加粗】dataframe.shape

通过DataFrame对象的shape函数,进而展示出数据是几行几列的结构。

print('dataframe的结构是:{0}'.format(dataframe.shape))

# dataframe的结构是:(3, 2)

【加粗】dataframe.values

使用DataFrame对象的values函数,得出所有数据内容的结果。

# Importing the pprint function from the pprint module.
from pprint import pprint

pprint('dataframe对象的值是:{0}'.format(dataframe.values))

# "dataframe对象的值是:[['Java' 23]\n ['Python' 20]\n ['C++' 28]]"

3、数据清洗

数据清洗即是对DataFrame对象中的数据进行规范化的处理,比如空值的数据填充、重复数据的清理、数据格式的统一转换等等。

【加粗】dataframe.fillna()

# 将所有数据为空的项填充为0
dataframe.fillna(value=0)

# 使用均值进行填充
dataframe[u'已诞生多少年'].fillna(dataframe[u'已诞生多少年'].mean())

【加粗】map(str.strip)

# 去除指定列的首尾多余的空格后,再重新赋值给所在列

dataframe[u'编程语言'] = dataframe[u'编程语言'].map(str.strip)

【加粗】dataframe.astype

# 更改DataFrame数据对象中某个列的数据格式。

dataframe[u'已诞生多少年'].astype('int')

【加粗】dataframe.rename

# 更改DataFrame数据对象中某个列的名称

dataframe.rename(columns={u'已诞生多少年': u'语言年龄'})

【加粗】 dataframe.drop_duplicates

# 以DataFrame中的某个列为准,删除其中的重复项

dataframe[u'编程语言'].drop_duplicates()

【加粗】dataframe.replace

# 替换DataFrame数据对象中某个列中指定的值

dataframe[u'编程语言'].replace('Java', 'C#')

4、数据预梳理

数据预处理(data preprocessing)是指在主要的处理以前对数据进行的一些处理。

如对大部分地球物理面积性观测数据在进行转换或增强处理之前,首先将不规则分布的测网经过插值转换为规则网的处理,以利于计算机的运算。

【加粗】数据合并

使用DataFrame对象数据合并的有四种方式可以选择,分别是merge、append、join、concat方式,不同方式实现的效果是不同的。

接下来使用两种比较常见的方式append、concat、join来演示一下DataFrame对象合并的效果。

使用两个DataFrame的数据对象通过append将对象的数据内容进行合并。

# Creating a dataframe with two columns, one called `编程语言` and the other called `已诞生多少年`.
dataframeA = pd.DataFrame({"编程语言": ['Java', 'Python', 'C++'],
                           "已诞生多少年": [23, 20, 28]}, columns=['编程语言', '已诞生多少年'])

# Creating a dataframe with two columns, one called `编程语言` and the other called `已诞生多少年`.
dataframeB = pd.DataFrame({"编程语言": ['Scala', 'C#', 'Go'],
                           "已诞生多少年": [23, 20, 28]}, columns=['编程语言', '已诞生多少年'])

# Appending the dataframeB to the dataframeA.
res = dataframeA.append(dataframeB)

# Printing the result of the append operation.
print(res)

#      编程语言  已诞生多少年
# 0    Java      23
# 1  Python      20
# 2     C++      28
# 0   Scala      23
# 1      C#      20
# 2      Go      28
#
# Process finished with exit code 0

使用两个DataFrame的数据对象通过concat将对象的数据内容进行合并。

# Concatenating the two dataframes together.
res = pd.concat([dataframeA, dataframeB])

# Printing the result of the append operation.
print(res)

#      编程语言  已诞生多少年
# 0    Java      23
# 1  Python      20
# 2     C++      28
# 0   Scala      23
# 1      C#      20
# 2      Go      28

concat函数的合并效果和append函数有异曲同工之妙,两者同样都是对数据内容进行纵向合并的。

使用两个DataFrame的数据对象通过join将对象的数据结构及数据内容进行横向合并。

# Creating a dataframe with two columns, one called `编程语言` and the other called `已诞生多少年`.
dataframeC = pd.DataFrame({"编程语言": ['Java', 'Python', 'C++'],
                           "已诞生多少年": [23, 20, 28]}, columns=['编程语言', '已诞生多少年'])

# Creating a dataframe with one column called `历史表现` and three rows.
dataframeD = pd.DataFrame({"历史表现": ['A', 'A', 'A']})

# Joining the two dataframes together.
res = dataframeC.join(dataframeD, on=None)

# Printing the result of the append operation.
print(res)

#      编程语言  已诞生多少年 历史表现
# 0    Java      23    A
# 1  Python      20    A
# 2     C++      28    A

可以发现使用join的函数之后,将dataframeD作为一个列扩展了并且对应的每一行都准确的填充了数据A。

【加粗】设置索引

给DataFrame对象设置索引的话就比较方便了,直接DataFrame对象提供的set_index函数设置需要定义索引的列名称就OK了。

# Creating a dataframe with two columns, one called `编程语言` and the other called `已诞生多少年`.
dataframeE = pd.DataFrame({"编程语言": ['Java', 'Python', 'C++'],
                           "已诞生多少年": [23, 20, 28]}, columns=['编程语言', '已诞生多少年'])

# Setting the index of the dataframe to the column `编程语言`.
dataframeE.set_index(u'编程语言')

# Printing the dataframeE.
print(dataframeE)

#      编程语言  已诞生多少年
# 0    Java      23
# 1  Python      20
# 2     C++      28

【加粗】数据排序

DataFrame数据对象的排序主要是通过索引排序、某个指定列排序的方式为参照完成对DataFrame对象中的整个数据内容排序。

# Sorting the dataframeE by the index.
res = dataframeE.sort_index()

# Printing the res.
print(res)

#      编程语言  已诞生多少年
# 0    Java      23
# 1  Python      20
# 2     C++      28

# Sorting the dataframeE by the column `已诞生多少年`.
res = dataframeE.sort_values(by=['已诞生多少年'], ascending=False)

# Printing the res.
print(res)

#      编程语言  已诞生多少年
# 2     C++      28
# 0    Java      23
# 1  Python      20

sort_index函数是指按照当前DataFrame数据对象的索引进行排序,sort_values则是按照指定的一个或多个列的值进行降序或者升序。

【加粗】数据分组

数据预处理中的数据分组主要是需要的分组的数据打上特殊的标记以便于后期对数据的归类处理。

比较简单一些的分组处理可以使用numpy中提供的函数进行处理,这里使用numpy的where函数来设置过滤条件。

# Creating a new column called `分组标记(高龄/低龄)` and setting the value to `高` if the value in the column `已诞生多少年` is greater
# than or equal to 23, otherwise it is setting the value to `低`.
dataframeE['分组标记(高龄/低龄)'] = np.where(dataframeE[u'已诞生多少年'] >= 23, '高', '低')

# Printing the dataframeE.
print(dataframeE)

#      编程语言  已诞生多少年 分组标记(高龄/低龄)
# 0    Java      23           高
# 1  Python      20           低
# 2     C++      28           高

稍微复杂一些的过滤条件可以使用多条件的过滤方式找出符合要求的数据项进行分组标记。

# Creating a new column called `分组标记(高龄/低龄,是否是Java)` and setting the value to `高/是` if the value in the column `已诞生多少年` is
# greater than or equal to 23 and the value in the column `编程语言` is equal to `Java`, otherwise it is setting the value to
# `低/否`.
dataframeE['分组标记(高龄/低龄,是否是Java)'] = np.where((dataframeE[u'已诞生多少年'] >= 23) & (dataframeE[u'编程语言'] == 'Java'), '高/是',
                                             '低/否')

# Printing the dataframeE.
print(dataframeE)

#      编程语言  已诞生多少年 分组标记(高龄/低龄) 分组标记(高龄/低龄,是否是Java)
# 0    Java      23           高                 高/是
# 1  Python      20           低                 低/否
# 2     C++      28           高                 低/否

5、提取数据

数据提取即是对符合要求的数据完成提取操作,DataFrame对象提取数据主要是按照标签值、标签值和位置以及数据位置进行提取。

DataFrame对象按照位置或位置区域提取数据,这里所说的位置其实就是DataFrame对象的索引。

基本上所有的操作都能够使用DataFrame对象的loc函数、iloc函数这两个函数来实现操作。

提取索引为2的DataFrame对象对应的行数据。

# Selecting the row with the index of 2.
res = dataframeE.loc[2]

# Printing the result of the operation.
print(res)

# 编程语言                   C++
# 已诞生多少年                  28
# 分组标记(高龄/低龄)              高
# 分组标记(高龄/低龄,是否是Java)    低/否
# Name: 2, dtype: object

提取索引0到1位置的所有的行数据。

# Selecting the rows with the index of 0 and 1.
res = dataframeE.loc[0:1]

# Printing the result of the operation.
print(res)

#      编程语言  已诞生多少年 分组标记(高龄/低龄) 分组标记(高龄/低龄,是否是Java)
# 0    Java      23           高                 高/是
# 1  Python      20           低                 低/否

按照前两行前两列的数据区域提取数据。

# 注意这里带有冒号:的iloc函数用法效果是和前面不一样的。

# Selecting the first two rows and the first two columns.
res = dataframeE.iloc[:2, :2]

# Printing the result of the operation.
print(res)

#      编程语言  已诞生多少年
# 0    Java      23
# 1  Python      20

提取符合条件的数据项,对某一列数据中指定的值完成提取。

# 提取出编程语言这个列中数据内容是Java、C++的数据行。

# Selecting the rows where the value in the column `编程语言` is either `Java` or `C++`.
res = dataframeE.loc[dataframeE[u'编程语言'].isin(['Java', 'C++'])]

# Printing the result of the operation.
print(res)

#    编程语言  已诞生多少年 分组标记(高龄/低龄) 分组标记(高龄/低龄,是否是Java)
# 0  Java      23           高                 高/是
# 2   C++      28           高                 低/否

6、筛选数据

筛选数据是数据处理整个生命周期中的最后一个对原有数据的提取操作,通过各种逻辑判断条件的操作来完成数据筛选。

这里分别通过使用DataFrame对象的'与'、'或'、'非'三种常用的逻辑判断来实现下面的数据筛选操作。

# Creating a dataframe with two columns, one called `编程语言` and the other called `已诞生多少年`.
dataframeF = pd.DataFrame({"编程语言": ['Java', 'Python', 'C++'],
                           "已诞生多少年": [23, 20, 28]}, columns=['编程语言', '已诞生多少年'])

res = dataframeF.loc[(dataframeF[u'已诞生多少年'] > 25) & (dataframeF[u'编程语言'] == 'C++'), [u'编程语言', u'已诞生多少年']]

# Printing the result of the operation.
print(res)

#   编程语言  已诞生多少年
# 2  C++      28

res = dataframeF.loc[(dataframeF[u'已诞生多少年'] > 23) | (dataframeF[u'编程语言'] == 'Java'), [u'编程语言', u'已诞生多少年']]

# Printing the result of the operation.
print(res)

#    编程语言  已诞生多少年
# 0  Java      23
# 2   C++      28

res = dataframeF.loc[(dataframeF[u'编程语言'] != 'Java'), [u'编程语言', u'已诞生多少年']]

# Printing the result of the operation.
print(res)

#      编程语言  已诞生多少年
# 1  Python      20
# 2     C++      28

7、数据汇总

数据汇总通常是使用groupby函数对一个或多个列名称进行分组,再使用count函数统计分组后的数目。

res = dataframeF.groupby(u'编程语言').count()

# Printing the result of the operation.
print(res)

#         已诞生多少年
# 编程语言
# C++          1
# Java         1
# Python       1

res = dataframeF.groupby(u'编程语言')[u'已诞生多少年'].count()

# Printing the result of the operation.
print(res)

# 编程语言
# C++       1
# Java      1
# Python    1
# Name: 已诞生多少年, dtype: int64

res = dataframeF.groupby([u'编程语言',u'已诞生多少年'])[u'已诞生多少年'].count()

# Printing the result of the operation.
print(res)

# 编程语言    已诞生多少年
# C++     28        1
# Java    23        1
# Python  20        1
# Name: 已诞生多少年, dtype: int64

8、数据统计

数据统计的概念基本上和数学上的思路是一样的,首先是对数据进行采样,采样完成计算相关的标准差、协方差等相关的数据指标。

'''按照采样不放回的方式,随机获取DataFrame对象中的两条数据'''
res = dataframeF.sample(n=2, replace=False)

# Printing the result of the operation.
print(res)

#      编程语言  已诞生多少年
# 0    Java      23
# 1  Python      20

可以发现每次执行之后都会随机的从DataFrame的数据表中取出两条数据。

若是采样放回的方式时则可以将replace的属性设置为True即可。

# 计算出DataFrame对象的所有列的协方差
res = dataframeF.cov()

# Printing the result of the operation.
print(res)

#            已诞生多少年
# 已诞生多少年  16.333333

# 计算出DataFrame对象相关性
res = dataframeF.corr()

# Printing the result of the operation.
print(res)

#         已诞生多少年
# 已诞生多少年     1.0

以上就是Python pandas的八个生命周期总结的详细内容,更多关于Python pandas生命周期的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python pandas的八个生命周期总结

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

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

猜你喜欢
  • Python pandas的八个生命周期总结
    这里从八个pandas的数据处理生命周期,整理汇总出pandas框架在整个数据处理过程中都是如何处理数据的。 也就是从pandas的数据表对象以及数据汇总、数据统计等等直到数据导出的...
    99+
    2024-04-02
  • Bean 的生命周期总结
      目录 一、Bean生命周期的五个阶段 Bean的初始化 二、@PostConstruct 和 @PreDestroy 各自的效果 三、 实例化和初始化的区别 四、为什么要先设置属性在进⾏初始化呢? 一、Bea...
    99+
    2023-09-10
    java 开发语言 spring
  • Android中的Activity生命周期总结
    概述 有图有真相,所以先上图: 上图是从Android官网截下的Activity的生命周期流程图,结构非常清晰,它描述了Activity在其生命周期中所有可能发生的情况以及发...
    99+
    2022-06-06
    activity生命周期 activity Android
  • Vue生命周期实例分析总结
    目录1. 概述2. 页面钩子函数3. 生命周期函数1. 概述 每个 Vue 实例在被创建之前都要经过一系列的初始化过程。例如需要设置数据监听、编译模板、挂载实例到 DOM、在数据变化...
    99+
    2024-04-02
  • Vue生命周期中的八个钩子函数相机
    目录1、beforeCreate和created函数2、beforeMount和mounted函数3、beforeUpdate和updated函数4、beforeDestroy和de...
    99+
    2024-04-02
  • android基础总结篇之一:Activity生命周期
    近来回顾了一下关于Activity的生命周期,参看了相关书籍和官方文档,也有了不小的收获,对于以前的认知有了很大程度上的改善,在这里和大家分享一下。 熟悉javaEE的朋友们...
    99+
    2022-06-06
    activity生命周期 activity Android
  • Vue生命周期中的八个钩子函数相机是怎样的
    Vue生命周期中的八个钩子函数相机是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、beforeCreate和created函数beforeCreate和created...
    99+
    2023-06-22
  • vue的生命周期几个阶段
    本教程操作环境:windows7系统、vue3版,DELL G3电脑。生命周期就是组件从创建到销毁的整个过程。也就是从开始创建、初始化数据、编译模板、挂载 Dom→渲染、更新→渲染、卸载等一系列过程,我们称这 是 Vue 的生命周期生命周期...
    99+
    2023-05-14
    Vue 生命周期
  • Spring的生命周期
    Spring的生命周期 Spring框架是一个非常流行的Java企业级开发框架,它提供了很多强大的功能,包括依赖注入、AOP、事务管理等。在使用Spring框架时,了解Spring的生命周期非常重要,可以帮助我们更好地理解Spring框架...
    99+
    2023-09-06
    面试 java Powered by 金山文档
  • servlet的生命周期结构有哪些
    servlet的生命周期结构有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Servlet 生命周期:Servlet 加载--->实例化--->...
    99+
    2023-05-31
    servlet 生命周期
  • 详解ASP.NET MVC的整个生命周期
    目录一、介绍二、MVC生命周期详述View的初始化和渲染呈现三、结束一、介绍 我们做开发的,尤其是做微软技术栈的,有一个方向是跳不过去的,那就是MVC开发。我相信大家,做ASP.NE...
    99+
    2024-04-02
  • Vue八大生命周期钩子函数源码分析
    本篇内容主要讲解“Vue八大生命周期钩子函数源码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue八大生命周期钩子函数源码分析”吧!一.速识概念:我们把一个对象从生成(new)到被销毁(d...
    99+
    2023-07-05
  • servlet生命周期有几个阶段
    servlet的生命周期包括以下几个阶段:1. 加载阶段(Loading):当容器启动时,会加载servlet类,并创建servle...
    99+
    2023-08-26
    servlet
  • servlet生命周期分几个阶段
    Servlet生命周期可以分为以下四个阶段:1. 加载和实例化(Loading and Instantiation):在Web容器启...
    99+
    2023-08-25
    servlet
  • vue的生命周期分为几个阶段
    本篇内容介绍了“vue的生命周期分为几个阶段”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Vue.js是一种前端开发框架,它采用了一些方便开...
    99+
    2023-07-06
  • React 组件的常用生命周期函数汇总
    目录1. 概述2. 生命周期的三个阶段2.1. 创建时(挂载阶段)2.2. 更新时(更新阶段)2.3. 卸载时(卸载阶段)1. 概述 意义:组件的生命周期有助于理解组件的运行方式、完成更复杂的组件功能、分析组件错误原因等...
    99+
    2022-08-15
    React 组件常用生命周期函数 React 组件
  • vue的生命周期钩子与父子组件的生命周期详解
    目录vue的生命周期钩子的介绍父子组件的生命周期加载渲染过程父组件更新过程子组件更新过程父子组件更新过程销毁过程代码示例created和mounted的区别vue的生命周期钩子的介绍...
    99+
    2022-11-13
    vue 生命周期 vue 父子组件生命周期
  • vue生命周期有多少个阶段
    这篇文章给大家分享的是有关vue生命周期有多少个阶段的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue的生命周期共有八个阶段,分别是:1、实例创建前;2、实例创建后;3、实例载入前;4、实例载入后;5、实例更新...
    99+
    2023-06-29
  • vue3改了几个生命周期函数
    本教程操作环境:windows7系统、vue3版,DELL G3电脑。Vue实例有一个完整的生命周期,也就是从new Vue()、初始化事件(.once事 件)和生命周期、编译模版、挂载Dom -> 渲染、更新 -> 渲染、卸载...
    99+
    2023-05-14
    生命周期 vue3 Vue
  • vue3生命周期函数改了几个
    这篇“vue3生命周期函数改了几个”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue3生命周期函数改了几个”文章吧。vue...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作