文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

学习 Python 之 Pandas库

2023-10-27 11:49

关注

学习 Python 之 Pandas库

Pandas库

什么是Pandas库?

Pandas是基于Numpy的专业数据分析工具, 可以灵活高效的处理各种数据集

它提供了的数据结构有DataFrame和Series等

我们可以简单粗的把DataFrame理解为Excel里面的一张表,而Series就是表中的某一列

DataFrame 创建和存储

函数

函数作用
DataFrame(data = 数据, index = 行, columns = 列, dtype = 类型, copy = 是否深拷贝)创建DataFrame对象
read_csv(filepath_or_buffer = 文件路径, delimiter = 分隔符, header = 是否第一行为列, engine = 引擎, encoding = 编码)读取.csv文件创建DataFrame对象
read_excel(路径, header = 指定哪一行为, names = 指定列)读取.xlsx文件创建DataFrame对象
.to_csv(路径)保存为.csv文件
.to_excel(路径)保存为.xlsx文件

1. 使用DataFrame构造函数

函数作用
DataFrame(data = 数据, index = 行, columns = 列, dtype = 类型, copy = 是否深拷贝)创建DataFrame对象

创建时不指定index,系统会自动生成从0开始的索引, 即行从0开始

(1). 使用列表创建
import pandasdataFrame = pandas.DataFrame(    data = [        [60, 78, 92, 85],        [70, 68, 95, 76],        [88, 98, 83, 87]    ],    index = ['小明', '小红', '小强',],    columns=['语文', '数学', '英语', '化学'],    dtype = float,    copy = True)print(dataFrame)

结果:

      语文    数学    英语    化学小明  60.0  78.0  92.0  85.0小红  70.0  68.0  95.0  76.0小强  88.0  98.0  83.0  87.0

使用列表创建

一个列表表示一条记录

index是每一条记录的名称

columns是每一列的名字

(2). 使用字典创建
import pandasdataFrame = pandas.DataFrame(    data = {        '语文': [60, 78, 92, 85],        '数学': [70, 68, 95, 76],        '英语': [88, 98, 83, 87],    },    index = ['小明', '小红', '小强', '小美'],    dtype = float,    copy = True)print(dataFrame)

结果:

      语文    数学    英语小明  60.0  70.0  88.0小红  78.0  68.0  98.0小强  92.0  95.0  83.0小美  85.0  76.0  87.0

使用字典创建

列名称是字典中键的名称, 字典中的元素是该列的值

index是每一条记录的名称, index的长度与字典中某一个键值对的值的长度一样

(3). 从另一个DataFrame对象创建
import pandasdataFrame = pandas.DataFrame(    data = [        [60, 78, 92, 85],        [70, 68, 95, 76],        [88, 98, 83, 87]    ],    index = ['小明', '小红', '小强', ],    columns = ['语文', '数学', '英语', '化学'],    dtype = float,    copy = False)dataFrame2 = pandas.DataFrame(dataFrame, copy = False)print(dataFrame2)dataFrame2['语文'] = [0, 0, 0]print(dataFrame)

结果:

      语文    数学    英语    化学小明  60.0  78.0  92.0  85.0小红  70.0  68.0  95.0  76.0小强  88.0  98.0  83.0  87.0    语文    数学    英语    化学小明   0  78.0  92.0  85.0小红   0  68.0  95.0  76.0小强   0  98.0  83.0  87.0

从已有的DataFrame创建, copy参数可以指定深拷贝还是浅拷贝

当copy = False是浅拷贝, 上面的这个例子就证明了

2. 从文件读取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WPjNMdzf-1654143923432)(Pandas图片/img_1.png)]

函数作用
read_csv(filepath_or_buffer = 文件路径, delimiter = 分隔符, header = 是否第一行为列, engine = 引擎, encoding = 编码)读取.csv文件创建DataFrame对象
read_excel(路径, header = 指定哪一行为, names = 指定列)读取.xlsx文件创建DataFrame对象
(1). 从.csv文件读取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hbWIevrU-1654143923434)(Pandas图片/img_2.png)]

import pandasdataFrame = pandas.read_csv('../数据/test.csv')print(dataFrame)

结果:

   姓名    语文    数学     英语0  小明  62.0  66.0   86.01  小红  86.0  97.5  100.0

默认分隔符以","逗号分割, 可以指定分割类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-djldd8ju-1654143923435)(Pandas图片/img_3.png)]

import pandasdataFrame = pandas.read_csv(    '../数据/test.csv',    delimiter = '|')print(dataFrame)

结果:

   姓名    语文    数学     英语0  小明  62.0  66.0   86.01  小红  86.0  97.5  100.0

默认以第一行作为列, 可以不知道列, 这样第一行也变成了数据

import pandasdataFrame = pandas.read_csv(    filepath_or_buffer = '../数据/test.csv',    delimiter = '|',    header = None,    engine = 'python',    encoding = 'utf-8')print(dataFrame)

结果:

    0    1     2     30  姓名   语文    数学    英语1  小明  62.   66.   86.2  小红  86.  97.5  100.

engine是使用的分析引擎,读取csv文件一般指定python避免中文和编码造成的报错

encoding是编码格式

(2). 从excel文件读取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M48iNtPG-1654143923436)(Pandas图片/img.png)]

import pandasdataFrame = pandas.read_excel(    '../数据/test.XLSX',    header = None)print(dataFrame)
    0     1     20  姓名    语文    数学1  小明  66.5    862  小红    89  99.5

3. 存储

函数作用
.to_csv(路径)保存为.csv文件
.to_excel(路径)保存为.xlsx文件

DataFrame 查看数据

函数

函数作用
.head(n = 5)查看数据前n行
.tail(n = 5)查看数据后n行
.info()查看数据信息
.describe()查看数据统计信息

1. 查看前几行

import pandasfrom sklearn import datasetsiris = datasets.load_iris()dataFrame = pandas.DataFrame(iris.data)print(dataFrame.head(10))

结果:

     0    1    2    30  5.1  3.5  1.4  0.21  4.9  3.0  1.4  0.22  4.7  3.2  1.3  0.23  4.6  3.1  1.5  0.24  5.0  3.6  1.4  0.25  5.4  3.9  1.7  0.46  4.6  3.4  1.4  0.37  5.0  3.4  1.5  0.28  4.4  2.9  1.4  0.29  4.9  3.1  1.5  0.1

2. 查看后几行

import pandasfrom sklearn import datasetsiris = datasets.load_iris()dataFrame = pandas.DataFrame(iris.data)print(dataFrame.tail())

结果:

       0    1    2    3145  6.7  3.0  5.2  2.3146  6.3  2.5  5.0  1.9147  6.5  3.0  5.2  2.0148  6.2  3.4  5.4  2.3149  5.9  3.0  5.1  1.8

3. 格式查看

import pandasfrom sklearn import datasetsiris = datasets.load_iris()dataFrame = pandas.DataFrame(iris.data)print(dataFrame.info())

结果:

# 对象的类型# 数据范围, 一共150个, 从0 - 149RangeIndex: 150 entries, 0 to 149# 数据一共4列Data columns (total 4 columns): #   Column  Non-Null Count  Dtype  ---  ------  --------------  -----   0   0       150 non-null    float64 1   1       150 non-null    float64 2   2       150 non-null    float64 3   3       150 non-null    float64dtypes: float64(4)memory usage: 4.8 KBNone

4. 查看统计信息

import pandasfrom sklearn import datasetsiris = datasets.load_iris()dataFrame = pandas.DataFrame(iris.data)print(dataFrame.describe())

结果:

                0           1           2           3count  150.000000  150.000000  150.000000  150.000000mean     5.843333    3.057333    3.758000    1.199333std      0.828066    0.435866    1.765298    0.762238min      4.300000    2.000000    1.000000    0.10000025%      5.100000    2.800000    1.600000    0.30000050%      5.800000    3.000000    4.350000    1.30000075%      6.400000    3.300000    5.100000    1.800000max      7.900000    4.400000    6.900000    2.500000

DataFrame 列操作

函数

函数作用
.drop(列名, axis = 1, inplace = True)查看数据前n行

1. 增加列

增加一列,用dataFrame[‘新列名’] = 新列值的形式, 在原数据基础上赋值即可

import pandasdataFrame = pandas.DataFrame(    data=[        [60, 78, 92, 85],        [70, 68, 95, 76],        [88, 98, 83, 87]    ],    index = ['小明', '小红', '小强', ],    columns = ['语文', '数学', '英语', '化学'],    dtype = float)print(dataFrame)dataFrame['生物'] = [96, 86, 88]print(dataFrame)

结果:

      语文    数学    英语    化学小明  60.0  78.0  92.0  85.0小红  70.0  68.0  95.0  76.0小强  88.0  98.0  83.0  87.0      语文    数学    英语    化学  生物小明  60.0  78.0  92.0  85.0  96小红  70.0  68.0  95.0  76.0  86小强  88.0  98.0  83.0  87.0  88

将其他的数据列增加过来, 即横向合并

import pandasdataFrame1 = pandas.DataFrame(    data=[        ['一级', '读书', 21, 176],        ['二级', '游泳', 22, 178],        ['三级', '游泳', 21, 185],        ['二级', '游泳', 19, 182],    ],    columns=['等级', '爱好', '年龄', '身高'],    index = ['小明', '小红', '小强', '小于'])print(dataFrame1)dataFrame2 = pandas.DataFrame(    data=[        ['学士', 'O'],        ['学士', 'A'],        ['博士', 'A'],        ['院士', 'B'],    ],    columns=['学位', '血型'],    index = ['小明', '小红', '小强', '小于'])print(dataFrame2)r = pandas.merge(    left = dataFrame1,    right = dataFrame2,    left_index = True,    right_index = True,    how = 'inner')print(r)

结果:

    等级  爱好  年龄   身高小明  一级  读书  21  176小红  二级  游泳  22  178小强  三级  游泳  21  185小于  二级  游泳  19  182    学位 血型小明  学士  O小红  学士  A小强  博士  A小于  院士  B

2. 删除列

使用, axis = 0表示对行操作, axis = 1表示针对列的操作, inplace为True, 则直接在源数据上进行修改, 否则源数据会保持原样

import pandasdataFrame = pandas.DataFrame(    data=[        [60, 78, 92, 85],        [70, 68, 95, 76],        [88, 98, 83, 87]    ],    index = ['小明', '小红', '小强', ],    columns = ['语文', '数学', '英语', '化学'],    dtype = float)dataFrame['生物'] = [96, 86, 88]print(dataFrame)dataFrame.drop('化学', axis = 1, inplace = True)print(dataFrame)

结果:

      语文    数学    英语    化学  生物小明  60.0  78.0  92.0  85.0  96小红  70.0  68.0  95.0  76.0  86小强  88.0  98.0  83.0  87.0  88      语文    数学    英语  生物小明  60.0  78.0  92.0  96小红  70.0  68.0  95.0  86小强  88.0  98.0  83.0  88

3. 选择列

import pandasdataFrame = pandas.DataFrame(    data=[        [60, 78, 92, 85],        [70, 68, 95, 76],        [88, 98, 83, 87]    ],    index=['小明', '小红', '小强', ],    columns=['语文', '数学', '英语', '化学'],    dtype=float)print(dataFrame['语文'])print(dataFrame[['语文', '化学']])

结果:

小明    60.0小红    70.0小强    88.0Name: 语文, dtype: float64      语文    化学小明  60.0  85.0小红  70.0  76.0小强  88.0  87.0

4. 修改列

全部修改为同一个值

指定修改的列的内容

import pandasdataFrame = pandas.DataFrame(    data=[        [60, 78, 92, 85],        [70, 68, 95, 76],        [88, 98, 83, 87]    ],    index=['小明', '小红', '小强', ],    columns=['语文', '数学', '英语', '化学'],    dtype=float)dataFrame['语文'] = 1dataFrame['化学'] = [100, 100, 100.0]print(dataFrame)

结果:

    语文    数学    英语     化学小明   1  78.0  92.0  100.0小红   1  68.0  95.0  100.0小强   1  98.0  83.0  100.0

DataFrame 索引

属性作用
iloc[ , ]对数据操作, 允许整数, 整数的列表, 切片, 布尔数组
loc[ , ]对数据操作, 允许标签和布尔
isin(数据列表)处于数据列表

1. 数字索引

dataFrame[行索引, 列索引]

取出数据中 3×3的零

import pandasdataFrame = pandas.DataFrame(    data=[        [60, 78, 92, 85],        [70, 68, 95, 76],        [88, 98, 83, 87],        [60, 78, 92, 85],        [70, 0, 0, 0],        [88, 0, 0, 0],        [60, 0, 0, 0],        [70, 68, 95, 76],        [88, 98, 83, 87]    ],    dtype = float,    columns = ['语文', '数学', '英语', '化学'])a = dataFrame.iloc[4:7, 1:]print(a)

结果:

    数学   英语   化学4  0.0  0.0  0.05  0.0  0.0  0.06  0.0  0.0  0.0

取出数据中 2×2的零

import pandasdataFrame = pandas.DataFrame(    data=[        [60, 78, 92, 85],        [70, 68, 95, 76],        [88, 98, 83, 87],        [60, 78, 92, 85],        [70, 0, 92, 0],        [60, 78, 92, 85],        [60, 0, 92, 0],        [70, 68, 95, 76],        [88, 98, 83, 87]    ],    dtype = float,    columns = ['语文', '数学', '英语', '化学'])a = dataFrame.iloc[4:7:2, 1:4:2]print(a)

结果:

    数学   化学4  0.0  0.06  0.0  0.0

2. 布尔索引

dataFrame[行索引, 列索引]

行索引和列索引可以是布尔数组

import pandasdataFrame = pandas.DataFrame(    data=[        ['一级', '读书', 21, 176],        ['二级', '游泳', 22, 178],        ['三级', '游泳', 21, 185],        ['二级', '游泳', 19, 182],    ],    columns = ['等级', '爱好', '年龄', '身高'])b = [True, False, False, True]a = dataFrame.iloc[b, :]print(a)

结果:

   等级  爱好  年龄   身高0  一级  读书  21  1763  二级  游泳  19  182

iloc()函数参数允许:

  1. 整数
  2. 整数的列表
  3. 切片
  4. 布尔数组

3. 标签索引

import pandasdataFrame = pandas.DataFrame(    data=[        ['一级', '读书', 21, 176],        ['二级', '游泳', 22, 178],        ['三级', '游泳', 21, 185],        ['二级', '游泳', 19, 182],    ],    columns=['等级', '爱好', '年龄', '身高'])# 找出等级为一的全部数据b = (dataFrame['等级'] == '一级') & (dataFrame['年龄'] == 21)r = dataFrame.loc[b, :]print(r)r = dataFrame.loc[:, ['年龄']]print(r)

结果:

   等级  爱好  年龄   身高0  一级  读书  21  176   年龄0  211  222  213  19

找出等级在是二和三的数据

import pandasdataFrame = pandas.DataFrame(    data=[        ['一级', '读书', 21, 176],        ['二级', '游泳', 22, 178],        ['三级', '游泳', 21, 185],        ['二级', '游泳', 19, 182],    ],    columns=['等级', '爱好', '年龄', '身高'])b = dataFrame['等级'].isin(['二级', '三级'])r = dataFrame.loc[b, :]print(r)

结果:

   等级  爱好  年龄   身高1  二级  游泳  22  1782  三级  游泳  21  1853  二级  游泳  19  182

DataFrame 操作

函数作用
concat(dataFrame列表)将这些dataFrame的数据纵向叠加
merge(left = 左表, right = 右表, left_index, right_index, how = 连接方式)按照指定连接方式将两个表合并
.dropna(subset = 列名列表)只要一行中任意一个字段为空,就会被删除
.isnull()返回布尔DataFrame对象
.fillna(值)用值填充空值
.dropduplicates(subset = 列名列表, keep = 'first' 或 'last')删除完全重复行, 可指定某字段重复时删除, 默认保留第一个, 后面重复的会删掉
.sort_values(by = 列名, ascending = 是否升序)对指定列排序
.groupby('列名')对指定列分组, 就是把该列值一样的分成一组
cut(x = 切分数据, bins = 切分方式, right = 是否包含右区间, labels = 分割后每段的名字列表)对一个数组进行分段
inplace属性 True : 对原来数据操作, False : 不对原来的数据操作

1. 纵向合并

import pandasdataFrame1 = pandas.DataFrame(    data=[        ['一级', '读书', 21, 176],        ['二级', '游泳', 22, 178],        ['三级', '游泳', 21, 185],        ['二级', '游泳', 19, 182],    ],    columns=['等级', '爱好', '年龄', '身高'],    index = ['小明', '小红', '小强', '小于'])r = pandas.concat([dataFrame1, dataFrame1])print(r)

结果:

    等级  爱好  年龄   身高小明  一级  读书  21  176小红  二级  游泳  22  178小强  三级  游泳  21  185小于  二级  游泳  19  182小明  一级  读书  21  176小红  二级  游泳  22  178小强  三级  游泳  21  185小于  二级  游泳  19  182

2. 横向合并

import pandasdataFrame1 = pandas.DataFrame(    data=[        ['一级', '读书', 21, 176],        ['二级', '游泳', 22, 178],        ['三级', '游泳', 21, 185],        ['二级', '游泳', 19, 182],    ],    columns=['等级', '爱好', '年龄', '身高'],    index=['小明', '小红', '小强', '小于'])print(dataFrame1)dataFrame2 = pandas.DataFrame(    data=[        ['学士', 'O'],        ['学士', 'A'],        ['博士', 'A'],        ['院士', 'B'],    ],    columns=['学位', '血型'],    index=['小明', '小红', '小强', '小于'])print(dataFrame2)r = pandas.merge(    left=dataFrame1,    right=dataFrame2,    left_index=True,    right_index=True,    how='inner')print(r)

结果:

    等级  爱好  年龄   身高小明  一级  读书  21  176小红  二级  游泳  22  178小强  三级  游泳  21  185小于  二级  游泳  19  182小明  一级  读书  21  176小红  二级  游泳  22  178小强  三级  游泳  21  185小于  二级  游泳  19  182
参数作用
left左表名
right右表名
left_index左表按照索引连接
right_index右表按照索引连接
how连接方式, inner, left, right, outer

左连接左表数据不改变, 连接时没有的字段为空

右连接右表数据不改变, 连接时没有的字段为空

外连接是两个表的数据都不变, 没有的字段为空

3. 空值处理

函数作用
.dropna(subset = 列名列表)只要一行中任意一个字段为空,就会被删除
.isnull()返回布尔DataFrame对象
(1). 判断空值
import pandasdataFrame = pandas.DataFrame(    data=[        ['一级', None, 21, 176],        ['二级', '游泳', None, 178],        ['三级', '游泳', 21, 185],        [None, '游泳', 19, None],    ],    columns=['等级', '爱好', '年龄', '身高'],    index=['小明', '小红', '小强', '小于'])print(dataFrame)print(dataFrame.isnull())print(dataFrame['等级'].isnull())

结果:

      等级    爱好    年龄     身高小明    一级  None  21.0  176.0小红    二级    游泳   NaN  178.0小强    三级    游泳  21.0  185.0小于  None    游泳  19.0    NaN       等级     爱好     年龄     身高小明  False   True  False  False小红  False  False   True  False小强  False  False  False  False小于   True  False  False   True小明    False小红    False小强    False小于     TrueName: 等级, dtype: bool
(2). 计算空值个数
import pandasdataFrame = pandas.DataFrame(    data=[        ['一级', None, 21, 176],        ['二级', '游泳', None, 178],        ['三级', '游泳', 21, 185],        [None, '游泳', 19, None],    ],    columns=['等级', '爱好', '年龄', '身高'],    index=['小明', '小红', '小强', '小于'])print(dataFrame)print(dataFrame.isnull().sum())

结果:

      等级    爱好    年龄     身高小明    一级  None  21.0  176.0小红    二级    游泳   NaN  178.0小强    三级    游泳  21.0  185.0小于  None    游泳  19.0    NaN等级    1爱好    1年龄    1身高    1dtype: int64
(3). 删除空值

dropna()函数, 只要一行中任意一个字段为空,就会被删除

dropna(subset = [‘列名’]), 指定当某列出现空值才删除

import pandasdataFrame = pandas.DataFrame(    data=[        ['一级', None, 21, 176],        ['二级', '游泳', None, 178],        ['三级', '游泳', 21, 185],        [None, '游泳', 19, None],    ],    columns=['等级', '爱好', '年龄', '身高'],    index=['小明', '小红', '小强', '小于'])print(dataFrame)print(dataFrame.dropna())

结果:

      等级    爱好    年龄     身高小明    一级  None  21.0  176.0小红    二级    游泳   NaN  178.0小强    三级    游泳  21.0  185.0小于  None    游泳  19.0    NaN    等级  爱好    年龄     身高小强  三级  游泳  21.0  185.0
(4). 填充空值
import pandasdataFrame = pandas.DataFrame(    data=[        ['一级', None, 21, 176],        ['二级', '游泳', None, 178],        ['三级', '游泳', 21, 185],        [None, '游泳', 19, None],    ],    columns=['等级', '爱好', '年龄', '身高'],    index=['小明', '小红', '小强', '小于'])print(dataFrame)dataFrame['年龄'] = dataFrame['年龄'].fillna(20)print(dataFrame)

结果:

小明    一级  None  21.0  176.0小红    二级    游泳   NaN  178.0小强    三级    游泳  21.0  185.0小于  None    游泳  19.0    NaN      等级    爱好    年龄     身高小明    一级  None  21.0  176.0小红    二级    游泳  20.0  178.0小强    三级    游泳  21.0  185.0小于  None    游泳  19.0    NaN

4. 去重

函数作用
.dropduplicates(subset = 列名列表, keep = 'first' 或 'last')删除完全重复行, 可指定某字段重复时删除, 默认保留第一个, 后面重复的会删掉
import pandasdataFrame = pandas.DataFrame(    data=[        ['一级', None, 21, 176],        ['二级', '游泳', None, 178],        ['三级', '游泳', 21, 185],        [None, '游泳', 19, None],    ],    columns=['等级', '爱好', '年龄', '身高'],    index=['小明', '小红', '小强', '小于'])print(dataFrame)print(dataFrame.drop_duplicates(subset = ['爱好'], keep = 'first'))

结果:

      等级    爱好    年龄     身高小明    一级  None  21.0  176.0小红    二级    游泳   NaN  178.0小强    三级    游泳  21.0  185.0小于  None    游泳  19.0    NaN    等级    爱好    年龄     身高小明  一级  None  21.0  176.0小红  二级    游泳   NaN  178.0

5. 排序

函数作用
.sort_values(by = 列名, ascending = 是否升序)对某列排序
import pandasdataFrame = pandas.DataFrame(    data=[        ['一级', None, 21, 176],        ['二级', '游泳', None, 178],        ['三级', '游泳', 21, 185],        [None, '游泳', 19, None],    ],    columns=['等级', '爱好', '年龄', '身高'],    index=['小明', '小红', '小强', '小于'])print(dataFrame)dataFrame = dataFrame.sort_values(by = '等级', ascending = True)print(dataFrame)

结果:

      等级    爱好    年龄     身高小明    一级  None  21.0  176.0小红    二级    游泳   NaN  178.0小强    三级    游泳  21.0  185.0小于  None    游泳  19.0    NaN      等级    爱好    年龄     身高小明    一级  None  21.0  176.0小强    三级    游泳  21.0  185.0小红    二级    游泳   NaN  178.0小于  None    游泳  19.0    NaN

6. 分组

分组就是把指定的一列的值相同的分为一组, 调用一些函数对这些指定列值相同数据进行操作

函数作用
.groupby('列名')对指定列分组, 就是把该列值一样的分成一组
计算值函数作用
sum()组内求和
max()组内求最大值
min()组内求最小值
std()组内求标准差
mean()组内求平均数
import pandasdataFrame = pandas.DataFrame(    data=[        ['一级', '读书', 21, 176],        ['二级', '游泳', 20, 178],        ['三级', '游泳', 21, 185],        ['四级', '游泳', 19, 177],    ],    columns=['等级', '爱好', '年龄', '身高'],    index=['小明', '小红', '小强', '小于'])print(dataFrame)groupData = dataFrame.groupby('年龄')print(groupData)print(groupData.sum())print(groupData.max())print(groupData.min())print(groupData.std())print(groupData.mean())

结果:

    等级  爱好  年龄   身高小明  一级  读书  21  176小红  二级  游泳  20  178小强  三级  游泳  21  185小于  四级  游泳  19  177     身高年龄     19  17720  17821  361    等级  爱好   身高年龄             19  四级  游泳  17720  二级  游泳  17821  三级  读书  185    等级  爱好   身高年龄             19  四级  游泳  17720  二级  游泳  17821  一级  游泳  176          身高年龄          19       NaN20       NaN21  6.363961       身高年龄       19  177.020  178.021  180.5

可以指定分组后的数据的列进行操作

dataFrame = pandas.DataFrame(    data=[        ['一级', '读书', 21, 176],        ['二级', '游泳', 20, 178],        ['三级', '游泳', 21, 185],        ['四级', '游泳', 19, 177],        ['四级', '读书', 19, 165],        ['四级', '读书', 19, 190],    ],    columns=['等级', '爱好', '年龄', '身高'],    index=['小明', '小红', '小强', '小于', '小兰', '小智'])print(dataFrame)groupData = dataFrame.groupby('年龄')groupData = groupData['身高']print(groupData.sum())

结果:

    等级  爱好  年龄   身高小明  一级  读书  21  176小红  二级  游泳  20  178小强  三级  游泳  21  185小于  四级  游泳  19  177小兰  四级  读书  19  165小智  四级  读书  19  190年龄19    53220    17821    361Name: 身高, dtype: int64

7. 分段

函数作用
cut(x = 切分数据, bins = 切分方式, right = 是否包含右区间, labels = 分割后每段的名字列表)对一个数组进行分段
import pandasdataFrame = pandas.DataFrame(    data=[        ['一级', '读书', 21, 176],        ['二级', '游泳', 20, 178],        ['三级', '游泳', 21, 185],        ['四级', '游泳', 19, 177],        ['四级', '读书', 19, 165],        ['四级', '读书', 19, 190],    ],    columns=['等级', '爱好', '年龄', '身高'],    index=['小明', '小红', '小强', '小于', '小兰', '小智'])r = pandas.cut(x = dataFrame['身高'], bins = [160, 170, 180, 190, 200], right = False, labels = ['中等身高', '身高较高', '身高很高', '身高太高'])print(r, end = '\n')r = pandas.cut(x=dataFrame['身高'], bins = 4, right=False, labels=['中等身高', '身高较高', '身高很高', '身高太高'])print(r)

结果:

小明    身高较高小红    身高较高小强    身高很高小于    身高较高小兰    中等身高小智    身高太高Name: 身高, dtype: categoryCategories (4, object): ['中等身高' < '身高较高' < '身高很高' < '身高太高']小明    身高较高小红    身高很高小强    身高太高小于    身高较高小兰    中等身高小智    身高太高Name: 身高, dtype: categoryCategories (4, object): ['中等身高' < '身高较高' < '身高很高' < '身高太高']

来源地址:https://blog.csdn.net/qq_37354060/article/details/125024503

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯