0

0

python机器学习数据建模与分析——pandas中常用函数总结

P粉084495128

P粉084495128

发布时间:2025-07-22 10:55:41

|

1203人浏览过

|

来源于php中文网

原创

Pandas是基于Numpy的结构化数据分析工具,核心结构为Series(一维带索引数组)和DataFrame(二维表格)。支持数据创建、索引访问、增删列,以及文件读写。还含groupby分组、数据合并、apply函数、数据分箱和虚拟变量转换等功能。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

python机器学习数据建模与分析——pandas中常用函数总结 - php中文网

Pandas介绍

Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。它包含了两个“利器”分别为DataFrame和Series。

  • DataFrame是Pandas中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。
  • Series是一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象。

一、Pandas数据结构

Pandas有两个最主要也是最重要的数据结构Series 和DataFrame

类型 描述
Series 一维的数据结构
DataFrame 二维的表格型的数据结构

提示:以下是本篇文章正文内容,下面案例可供参考

1.1 数据结构—Series

Series是一个类似一维数组的对象,它能够保存任何类型的数据,主要由一组数据和与之相关的索引两部分构成,函数如下:

立即学习Python免费学习笔记(深入)”;

pandas.Series(data, index, dtype, name, copy)
       

参数说明:

  • data:一组数据(ndarray 类型)
  • index:数据索引标签,如果不指定,默认从 0 开始
  • dtype:数据类型,默认会自己判断
  • name:设置名称 copy:拷贝数据,默认为 False

注意: Series的索引位于左边,数据位于右边

index element
0 a
1 b
2 c
3 d

1.1.1 Series的创建方式

Pandas的Series类对象的原型如下(仅作了解):

class pandas.Series(data = None,index = None,dtype = None,
name = None,copy = False,fastpath = False)
   
  • data:表示传入的数据。
  • index:表示索引,唯一且与数据长度相等,默认会自动创建一个从0~N的整数索引。

创建series对象举例:

1、通过传入一个列表来创建一个Series类对象:

In [2]
# 给pandas起个别名pdimport pandas as pd 
# 创建Series类对象ser_obj = pd.Series([1, 2, 3, 4, 5])print(ser_obj)
       
0    1
1    2
2    3
3    4
4    5
dtype: int64
       

创建Series类对象,并指定索引

In [2]
# 给pandas起个别名pdimport pandas as pd# 创建Series类对象ser_obj = pd.Series([1, 2, 3, 4, 5])
ser_obj.index = ['a', 'b', 'c', 'd', 'e']print(ser_obj)
       
a    1
b    2
c    3
d    4
e    5
dtype: int64
       

2、通过传入一个字典创建一个Series类对象,其中字典的key就是Series的index,例如:

In [3]
import pandas as pd
year_data = {2001: 17.8, 2002: 20.1, 2003: 16.5}
ser_obj2 = pd.Series(year_data)print(ser_obj2)
       
2001    17.8
2002    20.1
2003    16.5
dtype: float64
       

1.1.2 使用索引和获取数据

为了能方便地操作Series对象中的索引和数据,所以该对象提供了两个属性index和values分别进行获取。

# 获取ser_obj的索引ser_obj.index# 获取ser_obj的数据ser_obj.values
   

举例:

In [4]
import pandas as pd# 创建Series类对象ser_obj = pd.Series([1, 2, 3, 4, 5])
ser_obj.index = ['a', 'b', 'c', 'd', 'e']print(ser_obj.index)print('-'*50)print(ser_obj.values)
       
Index(['a', 'b', 'c', 'd', 'e'], dtype='object')
--------------------------------------------------
[1 2 3 4 5]
       

当然,我们也可以直接使用索引来获取数据

In [5]
# 获取位置索引'c'对应的数据print(ser_obj['c'])
       
3
       

当某个索引对应的数据进行运算以后,其运算的结果会替换原数据,仍然与这个索引保持着对应的关系。

例如:

In [7]
# 给pandas起个别名pdimport pandas as pd# 创建Series类对象ser_obj = pd.Series([1, 2, 3, 4, 5])
ser_obj.index = ['a', 'b', 'c', 'd', 'e']
ser_obj2 = ser_obj * 2print("输出结果如下:")print(ser_obj)print('-' * 50)print(ser_obj)print(ser_obj2)
       
输出结果如下:
a    1
b    2
c    3
d    4
e    5
dtype: int64
--------------------------------------------------
a    1
b    2
c    3
d    4
e    5
dtype: int64
a     2
b     4
c     6
d     8
e    10
dtype: int64
       

1.2 数据结构—DataFrame

DataFrame是一个类似于二维数组或表格(如excel)的对象,它每列的数据都可以是不同的数据类型。

注意: DataFrame的索引不仅有行索引,还有列索引,数据可以有多列

python机器学习数据建模与分析——pandas中常用函数总结 - php中文网        

1.2.1 DataFrame的创建方式

Pandas的DataFrame类对象的原型如下(仅作了解):

pandas.DataFrame(data = None,index = None,columns = None,dtype = None,copy = False )
       
  • index:表示行标签。若不设置该参数,则默认会自动创建一个从0~N的整数索引。
  • columns:列标签

1、通过传入数组来创建DataFrame类对象:

In [8]
import numpy as npimport pandas as pd# 创建数组demo_arr = np.array([['a', 'b', 'c'],
                     ['d', 'e', 'f']])# 基于数组创建DataFrame对象df_obj = pd.DataFrame(demo_arr)print(df_obj)
       
   0  1  2
0  a  b  c
1  d  e  f
       

在创建DataFrame类对象时,如果为其指定了列索引,则DataFrame的列会按照指定索引的顺序进行排列,比如指定列索引No1,No2, No3的顺序:

df_obj = pd.DataFrame(demo_arr, columns=['No1', 'No2', 'No3'])
       
index No1 No2 No3
0 a b c
1 d e f

1.2.2 使用列索引或访问属性获取数据

我们可以使用dataframe的列索引的方式来获取一列数据,返回的结果是一个Series对象。

In [1]
import numpy as npimport pandas as pd# 创建数组demo_arr = np.array([['a', 'b', 'c'],
                     ['d', 'e', 'f']])# 基于数组创建DataFrame对象,并指定列索引df_obj = pd.DataFrame(demo_arr, columns=['No1', 'No2', 'No3'])print(df_obj)# 通过列索引的方式获取一列数据element = df_obj['No2']# 查看一列数据print('查看一列数据:\n', element)# 查看返回结果的类型print(type(element))  # pandas.core.series.Series
       
  No1 No2 No3
0   a   b   c
1   d   e   f
查看一列数据:
 0    b
1    e
Name: No2, dtype: object
       

我们还可以使用访问属性的方式来获取一列数据,返回的结果是一个Series对象。

In [2]
# 通过属性获取列数据element = df_obj.No2# 查看返回结果的类型print(type(element))
       
       

注意: 在获取DataFrame的一列数据时,推荐使用列索引的方式完成,主要是因为在实际使用中,列索引的名称中很有可能带有一些特殊字符(如空格),这时使用“点字符”进行访问就显得不太合适了。

1.2.3 增加列

要想为DataFrame增加一列数据,则可以通过给列索引或者列名称赋值的方式实现。

In [3]
import numpy as npimport pandas as pd# 创建数组demo_arr = np.array([['a', 'b', 'c'],
                     ['d', 'e', 'f']])# 基于数组创建DataFrame对象,并指定列索引df_obj = pd.DataFrame(demo_arr, columns=['No1', 'No2', 'No3'])print('原始数据:\n', df_obj)# 增加No4一列数据df_obj['No4'] = ['g', 'h']print('增加一列之后的数据:\n', df_obj)
       
原始数据:
   No1 No2 No3
0   a   b   c
1   d   e   f
增加一列之后的数据:
   No1 No2 No3 No4
0   a   b   c   g
1   d   e   f   h
       

1.2.4 删除列

要想删除某一列数据,则可以使用del语句实现。

In [4]
import numpy as npimport pandas as pd# 创建数组demo_arr = np.array([['a', 'b', 'c'],
                     ['d', 'e', 'f']])# 基于数组创建DataFrame对象,并指定列索引df_obj = pd.DataFrame(demo_arr, columns=['No1', 'No2', 'No3'])print('原始数据:\n', df_obj)# 删除No3一列数据del df_obj['No3']print('删除一列之后的数据:\n', df_obj)
       
原始数据:
   No1 No2 No3
0   a   b   c
1   d   e   f
删除一列之后的数据:
   No1 No2
0   a   b
1   d   e
       

1.2.5 读入txt或者csv文件的操作

前面我们提到了DataFrame是一个类似于二维数组或表格(如excel)的对象,既然如此,那么我们便是能够对excel对象类似于csv、xlsx和txt等文件进行如DataFrame一样的操作。

这里展示一下读取txt文件后的输出结果(部分),详细的在下面我们会讲

import pandas as pd

data1 = pd.read_csv('E:\python机器学习数据建模与分析\数据\ReportCard1.txt', sep='\t')
data2 = pd.read_csv('E:\python机器学习数据建模与分析\数据\ReportCard2.txt', sep='\t')# 将两个数据文件按照学号合并为一个数据文件lastdata = pd.merge(data1, data2, on='xh', how='inner')print(lastdata)
       

输出结果如下所示:

       xh  sex  poli   chi  math  fore   phy   che   geo   his0   92103  2.0   NaN   NaN   NaN  66.0  98.0  79.0  89.0  81.01   92239  2.0  40.0  63.0  44.0  21.0  54.0  26.0  26.0  55.02   92142  2.0   NaN  70.0  59.0  22.0  68.0  26.0  26.0  63.03   92223  1.0  56.0  91.0  65.5  68.0  77.0  39.0  54.5  63.04   92144  1.0  59.0  79.0  34.0  34.0  57.0  37.0  37.0  76.05   92217  2.0  60.0  82.5  76.5  35.0  81.0  60.0  70.5  74.0
   

通过输出结果我们可以看出,输出的格式和DataFrame的是一模一样。

二、groupby函数

对数据集进行分组,并对各组应用一个聚合函数或转换函数,通常是数据分析的重要组成部分。在数据载入、合并,完成数据准备之后,通常需要计算分组统计或生成数据透视表。pandas提供了灵活高效的groupby()方法,方便用户对数据集进行切片、切块和摘要等操作。 python机器学习数据建模与分析——pandas中常用函数总结 - php中文网        

2.1 基本格式

pandas对象支持的groupby()方法语法格式如下:

groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False)
       
  • 参数by用于指定分组依据,可以是函数、字典、Series对象、DataFrame对象的列名等;
  • 参数axis表示分组轴的方向,可以是0或'index',1或'columns',默认值为0;
  • 参数level表示如果某个轴是一个MultiIndex对象(层级索引),则按照特定级别或多个级别分组;
  • 参数as_index=False表示用来分组的列中的数据不作为结果DataFrame对象的index;
  • 参数sort指定是否对分组标签进行排序,默认值为True。

使用groupby()方法可以实现两种分组方式,返回的对象结果不同。如果仅对DataFrame对象中的数据进行分组,将返回一个DataFrameGroupBy对象;如果是对DataFrame对象中某一列数据进行分组,将返回一个SeriesGroupBy对象。

举例:

1、按列名对列分组

# 按列名对列分组
obj1 =data['Country'].groupby(data['Region'])
print(type(obj1))

# 输出结果如下:
       

2、按列名对数据分组

obj2 = data.groupby(data['Region'])print(type(obj2))# 输出结果如下:
   

2.2 groupby的返回形式和正确使用方法

可以使用groupby('label')方法按照单列分组,也可以使用groupby('label1','label2')方法按照多列分组,返回一个GroupBy对象。

举例:

data.groupby('Region')# 按单列分组# 输出结果如下:

data.groupby(['Region', 'Country'])# 按多列分组# 输出结果如下:
       

通过以上输出结果我们可以看出,使用数据分组的groupby()方法返回一个GroupBy对象,此时并未真正进行计算,只是保存了数据分组的中间结果。

下面我们就举个例子来简单介绍下如何使用groupby输出自己想要的结果。

原数据data:

python机器学习数据建模与分析——pandas中常用函数总结 - php中文网        

2.2.1 单类分组举例

根据“班级”进行分组:

import pandas as pd
data = pd.read_excel('/Users/ABC/Documents/工作簿1.xlsx')for name, group in data.groupby(['班级']):
    num_g = group['班级'].count() # 获取组内记录数目
    print(name) # name为班级名称
    print(num_g)    print(group) # group为每个分组中的记录情况
    print('---------------')
   

“班级”分组结果:

python机器学习数据建模与分析——pandas中常用函数总结 - php中文网        

2.2.2 多类分组举例

根据“班级”和“科目”分组:

燕雀Logo
燕雀Logo

为用户提供LOGO免费设计在线生成服务

下载
import pandas as pd
data = pd.read_excel('/Users/ABC/Documents/工作簿1.xlsx')for name, group in data.groupby(['班级','科目']):
    num_g = group['学号'].count() # 获取组内记录数目
    print(name) # name为班级名称
    print(num_g)    print(group) # group为每个分组中的记录情况
    print('---------------')
   

“班级”和“科目”分组结果:

python机器学习数据建模与分析——pandas中常用函数总结 - php中文网        

三、Pandas读取文件操作

3.1 使用read_csv()进行文件读取

import pandas as pd
data=pd.read_csv('path',sep=',',header=0,names=["第一列","第二列","第三列"],encoding='utf-8')
       
  • path: 要读取的文件的绝对路径

  • sep:指定列和列的间隔符,默认sep=‘,’

    若sep=‘’\t",即列与列之间用制表符\t分割,相当于tab——四个空格

  • header:列名行,默认为0

  • names:列名命名或重命名

  • encoding:指定用于unicode文本编码格式

注意:read_csv()函数不仅可以读取csv类型的文件,还可以读取txt类型的文本文件。

3.2 pandas读取xlsx、xls文件

import pandas as pd
data=pd.read_excel('path',sheetname='sheet1',header=0,names=['第一列','第二列','第三列'])
       
  • path:要读取的文件的绝对路径

  • sheetname:指定读取excel中的哪一个工作表,默认sheetname=0,即默认读取excel中的第一个工作表 若sheetname = ‘sheet1’,即读取excel中的sheet1工作表;

  • header:用作列名的行号,默认为header=0

    若header=None,则表明数据中没有列名行

    若header=0,则表明第一行为列名

  • names:列名命名或重命名

3.3 pandas读取txt文件

read_csv 也可以读取txt文件,读取txt文件的方法同上,也可以用read_table读取txt文件

import pandas as pd
data = pd.read_table('path', sep = '\t', header = None, names = ['第一列','第二列','第三列'])
   

四、数据合并concat

扩展库pandas支持使用concat()函数按照指定的轴方向对多个pandas对象进行数据合并,常用于多个DataFrame对象的数据合并。语法格式及常用参数如下:

pd.concat((objs, axis=0, join='outer', join_axes=None, keys=None, levels=None, names=None, ignore_index=False, verify_integrity=False, copy=True)
       
  • 参数objs表示需要连接的多个pandas对象,可以是Series对象,DataFrame或Panel对象构成的列表或字典;
  • 参数axis指定需要连接的轴向,默认axis=0表示按行进行纵向合并和扩展,axis=1表示按列进行横向合并和扩展。
  • 参数join指定连接方式,默认值为outer,表示按照外连接(并集)方式合并数据;如果join='inner',表示按照内连接(交集)方式合并数据。

举例说明:

In [3]
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],					'B': ['B0', 'B1', 'B2', 'B3'],					'C': ['C0', 'C1', 'C2', 'C3'],					'D': ['D0', 'D1', 'D2', 'D3']},
					index=[0, 1, 2, 3])
df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],					'B': ['B4', 'B5', 'B6', 'B7'],					'C': ['C4', 'C5', 'C6', 'C7'],					'D': ['D4', 'D5', 'D6', 'D7']},
					index=[4, 5, 6, 7])
df3 = pd.DataFrame({'C': ['A8', 'A9', 'A10', 'A11'],					'D': ['B8', 'B9', 'B10', 'B11'],					'E': ['C8', 'C9', 'C10', 'C11'],					'F': ['D8', 'D9', 'D10', 'D11']},
					index=[0, 1, 2, 3])
   
In [10]
print("输出df1")print(df1)print("输出df2")print(df2)print("输出df3")print(df3)
       
输出df1
    A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3
输出df2
    A   B   C   D
4  A4  B4  C4  D4
5  A5  B5  C5  D5
6  A6  B6  C6  D6
7  A7  B7  C7  D7
输出df3
     C    D    E    F
0   A8   B8   C8   D8
1   A9   B9   C9   D9
2  A10  B10  C10  D10
3  A11  B11  C11  D11
       

使用concat()函数进行数据合并,参数axis默认值为0,表示按行进行纵向合并和扩展。

In [11]
# 纵向合并(列明相同)print(pd.concat([df1,df2], axis=0))
       
    A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3
4  A4  B4  C4  D4
5  A5  B5  C5  D5
6  A6  B6  C6  D6
7  A7  B7  C7  D7
       
In [12]
# 纵向合并(列明不同)print(pd.concat([df1, df3], axis=0))
       
     A    B    C    D    E    F
0   A0   B0   C0   D0  NaN  NaN
1   A1   B1   C1   D1  NaN  NaN
2   A2   B2   C2   D2  NaN  NaN
3   A3   B3   C3   D3  NaN  NaN
0  NaN  NaN   A8   B8   C8   D8
1  NaN  NaN   A9   B9   C9   D9
2  NaN  NaN  A10  B10  C10  D10
3  NaN  NaN  A11  B11  C11  D11
       
In [17]
# 横向合并(index相同)print(pd.concat([df1, df3], axis=1))
       
    A   B   C   D    C    D    E    F
0  A0  B0  C0  D0   A8   B8   C8   D8
1  A1  B1  C1  D1   A9   B9   C9   D9
2  A2  B2  C2  D2  A10  B10  C10  D10
3  A3  B3  C3  D3  A11  B11  C11  D11
       
In [18]
# 横向合并(index不同)print(pd.concat([df1, df2], axis=1))
       
     A    B    C    D    A    B    C    D
0   A0   B0   C0   D0  NaN  NaN  NaN  NaN
1   A1   B1   C1   D1  NaN  NaN  NaN  NaN
2   A2   B2   C2   D2  NaN  NaN  NaN  NaN
3   A3   B3   C3   D3  NaN  NaN  NaN  NaN
4  NaN  NaN  NaN  NaN   A4   B4   C4   D4
5  NaN  NaN  NaN  NaN   A5   B5   C5   D5
6  NaN  NaN  NaN  NaN   A6   B6   C6   D6
7  NaN  NaN  NaN  NaN   A7   B7   C7   D7
       

五、数据连接merge

扩展库pandas提供了一个与数据表连接操作类似的merge()函数。DataFrame对象的merge()函数可以根据单个或多个键将不同DataFrame对象的行连接起来,语法格式如下:

pd. merge(left, right, how='inner', on=None, left_on=None, right_on=None,  left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'))
       

merge()函数的主要参数说明如下图所示。

python机器学习数据建模与分析——pandas中常用函数总结 - php中文网        

举例:

In [4]
# `创建dataframe:`staff_df= pd.DataFrame([{'姓名': '张三', '部门': '研发部'},
						{'姓名': '李四', '部门': '财务部'},
						{'姓名': '赵六', '部门': '市场部'}])
student_df= pd.DataFrame([{'姓名': '张三', '专业': '计算机'},
						{'姓名': '李四', '专业': '会计'},
						{'姓名': '王五', '专业': '市场营销'}])print("运行结果如下:")print()print(staff_df)print('--------------------')print(student_df)
       
运行结果如下:

   姓名   部门
0  张三  研发部
1  李四  财务部
2  赵六  市场部
--------------------
   姓名    专业
0  张三   计算机
1  李四    会计
2  王五  市场营销
       

扩展库pandas中的merge()函数根据共同列或者索引对行进行连接,实现的是数据库的连接操作,包括外连接、内连接、左连接和右连接等。

1、外连接

# 外连接, 或者staff_df.merge(student_df, how='outer', on='姓名’)print(pd.merge(staff_df, student_df, how='outer', on='姓名'))
       

输出结果如下:

   姓名   部门    专业0  张三  研发部   计算机1  李四  财务部    会计2  赵六  市场部   NaN3  王五  NaN  市场营销
       

2、内连接

# 内连接, 或者staff_df.merge(student_df, how='inner', on='姓名’)print(pd.merge(staff_df, student_df, how='inner', on='姓名'))
       

输出结果如下:

   姓名   部门   专业0  张三  研发部  计算机1  李四  财务部   会计
       

3、左连接

# 左连接,或者staff_df.merge(student_df, how='left', on='姓名’)print(pd.merge(staff_df, student_df, how='left', on='姓名'))
       

输出结果如下:

   姓名   部门   专业0  张三  研发部  计算机1  李四  财务部   会计2  赵六  市场部  NaN
       

4、右连接

# 右连接,或者staff_df.merge(student_df, how='right', on='姓名’)print(pd.merge(staff_df, student_df, how='right', on='姓名'))
       

输出结果如下:

   姓名   部门    专业0  张三  研发部   计算机1  李四  财务部    会计2  王五  NaN  市场营销
       

5、添加新的列

# 添加新的数据列staff_df['地址'] = ['天津', '北京', '上海']
student_df['地址'] = ['天津', '上海', '广州']print(staff_df)
       

输出结果如下:

   姓名   部门  地址0  张三  研发部  天津1  李四  财务部  北京2  赵六  市场部  上海
   

六、apply函数

介绍: apply函数是pandas里面所有函数中自由度最高的函数。该函数如下:

DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None,args=(), **kwds)
       

该函数最有用的是第一个参数,这个参数是函数,相当于C/C++的函数指针。 这个函数需要自己实现,函数的传入参数根据axis来定,比如axis = 1,就会把一行数据作为Series的数据 结构传入给自己实现的函数中,我们在函数中实现对Series不同属性之间的计算,返回一个结果,则apply函数 会自动遍历每一行DataFrame的数据,最后将所有结果组合成一个Series数据结构并返回。 说太多概念性的东西可能不太理解,这里直接上样例:

import pandas as pd


data=pd.read_excel('E:\python机器学习数据建模与分析\数据\北京市空气质量数据.xlsx')print(data['日期'])
data['年']=data['日期'].apply(lambda x:x.year)print(data['年'])# 输出结果如下:0      2014-01-011      2014-01-022      2014-01-033      2014-01-044      2014-01-05
          ...    
2150   2019-11-222151   2019-11-232152   2019-11-242153   2019-11-252154   2019-11-26Name: 日期, Length: 2155, dtype: datetime64[ns]0       20141       20142       20143       20144       2014
        ... 
2150    20192151    20192152    20192153    20192154    2019Name: 年, Length: 2155, dtype: int64
       

通过输出结果我们其实可以看出,我们使用apply函数可以将日期中的年份提取出来。

七、pandas.cut()函数

pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3,include_lowest=False)
       

pandas.cut()函数可以将数据进行分类成不同的区间值。在数据分析中,例如有一组年龄数据,现在需要对不同的年龄层次的用户进行分析,那么我们可以根据不同年龄层次所对应的年龄段来作为划分区间,例如 bins = [1,28,50,150],对应 labels = [“青少年”,“中年”,“老年”],划分完后我们就可以很容易取出不同年龄段的用户数据。不仅是年龄数据,对于需要划分区间的数据都是十分有用的。

  • x:分箱时输入的数组,必须为一位数组
  • bins:分类依据的标准,可以是int、标量序列或间隔索引(IntervalIndex)
  • right:是否包含bins区间的最右边,默认为True,最右边为闭区间,False则不包含
  • labels:要返回的标签,和bins的区间对应
  • retbins:是否返回bins,当bins作为标量时使用非常有用,默认为False
  • precision:精度,int类型
  • include_lowest:第一个区间是否为左包含(左边为闭区间),默认为False,表示不包含,True则包含
  • duplicates:可选,默认为{default 'raise', 'drop'},如果 bin 边缘不是唯一的,则引发 ValueError 或删除非唯一的。
  • ordered:默认为True,表示标签是否有序。如果为 True,则将对生成的分类进行排序。如果为 False,则生成的分类将是无序的(必须提供标签)

举例: 按照学生平均成绩的高低进行分组(分为优、良、中、及格、不及格五种等级):

数据集如下: python机器学习数据建模与分析——pandas中常用函数总结 - php中文网        

import pandas as pd

bins = [0, 60, 70, 80, 85, 90]
lastdata['等级'] = pd.cut(lastdata['avg'], bins, labels=['不及格', '及格', '中等', ' 良好', '优秀'])print('对平均成绩的分组结果: \n{0}'.format(lastdata[['xh', 'sex', '等级']]))
       

结果如下(由于太长了只展示一部分):

对平均成绩的分组结果: 
       xh  sex   等级0   92103  2.0   良好1   92239  2.0  不及格2   92142  2.0  不及格3   92223  1.0   及格4   92144  1.0  不及格5   92217  2.0   及格6   92111  1.0   中等7   92146  1.0  不及格8   92234  1.0  不及格9   92113  1.0   中等10  92126  1.0   及格
   

八、pandas.get_dummies()函数

pandas.get_dummies()函数的作用将分类变量转化为0/1的虚拟变量。 虚拟变量也称作哑变量,是统计学处理分类型数据的一种常用方式。对具有K个类别的分类型变量X,也可以生成K个变量如X1,X2,...,XKX1,X2,...,XK,且每个变量仅有0和1两种取值。这些变量称为分类型变量的虚拟变量。其中,1表示属于某个类别,0表示不属于某个类别,和True和False含义差不多。

举例:

import pandas as pd
df = pd.DataFrame([
            ['green' , 'A'],
            ['red'   , 'B'],
            ['blue'  , 'A']])#我们这里形成一个(3,2)的dataframedf.columns = ['color',  'class'] 
pd.get_dummies(df) 
Out[4]: 
   color_blue  color_green  color_red  class_A  class_B0           0            1          0        1        01           0            0          1        0        12           1            0          0        1        0
       

通过上述例子我们可以发现,使用pandas.get_dummies()函数后,我们将所有的行和列索引都创建了个虚拟变量,0代表不属于这个类别,1代表属于该类别。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

57

2025.12.04

数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

309

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

222

2025.10.31

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

391

2023.09.04

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

298

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1500

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

623

2023.11.24

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

158

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.3万人学习

Django 教程
Django 教程

共28课时 | 3.6万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号