【Python】快速认识Pandas的10大索引

pandas 索引详细操作 Pandas中的索引(Index)是用于标识数据帧(DataFrame)和序列(Series)中的行的一种方式,类似于Python中的列表索引,但提供了更丰富的功能和更高的性能。 阅读详情

公众号:尤而小屋
作者:Peter
编辑:Peter

今天给大家带来一篇关于Pandas索引的文章:10种你必须掌握的Pandas索引。

索引在我们的日常生活中其实是很常见的,就像:

  • 一本书有自己的目录和具体的章节,当我们想找某个知识点,翻到对应的章节即可;

  • 也像图书馆中的书籍被分类成文史类、技术类、小说类等,再加上书籍的编号,很快就能够找到我们想要的书籍。

  • 外出吃饭点菜的菜单,从主食类、饮料/汤类、凉菜类等,到具体的菜名等,点个菜即可。

上面不同的场景都可以看做是一个具体的索引应用:通过索引我们能够快速定位数据。

因此,基于实际需求出发创建的索引对我们的业务工作具有很强的指导意义。在Pandas中创建合适的索引则能够方便我们的数据处理工作。

cf41a6cc736f78161de87390e6a6dff1.png

官网学习地址:https://pandas.pydata.org/docs/reference/api/pandas.Index.html

下面通过实际案例来介绍Pandas中常见的10种索引,以及如何创建它们。

pd.Index

Index是Pandas中的常见索引函数,通过它能够构建各种类型的索引,其语法为:

5afe2f0486008ca66e39a52ae40bb2ce.png
pandas.Index(
  data=None, # 一维数组或者类似数组结构的数据
  dtype=None,  # NumPy数据类型(默认值:对象)
  copy=False,  # 是否生成副本
  name=None, #  索引名字
  tupleize_cols=True,  # 如果为True,则尽可能尝试创建 MultiIndex
  **kwargs
)

导入两个必需的库:

import pandas as pd
import numpy as np

默认的数据类型是int64

In [2]:

# 通过列表来创建
pd.Index([1,2,3,4])

Out[2]:

Int64Index([1, 2, 3, 4], dtype='int64')

在创建的时候,还能够直接指定数据类型:

In [3]:

# 指定索引的数据类型
pd.Index([1,2,3,4], dtype="float64")

Out[3]:

Float64Index([1.0, 2.0, 3.0, 4.0], dtype='float64')

在创建的时候指定名称name和数据类型dtype:

In [4]:

# 指定类型和名称
pd.Index([1,2,3,4], 
         dtype="float64",
         name="Peter")

Out[4]:

Float64Index([1.0, 2.0, 3.0, 4.0], dtype='float64', name='Peter')

In [5]:

# 使用list函数生成列表来创建
pd.Index(list("ABCD"))

Out[5]:

Index(['A', 'B', 'C', 'D'], dtype='object')

使用元组来进行创建:

In [6]:

# 使用元组来创建
pd.Index(("a","b","c","d"))

Out[6]:

Index(['a', 'b', 'c', 'd'], dtype='object')

使用集合来进行创建。集合本身是无序的,所以最终的结果并不一定是按照给定的元素顺序:

In [7]:

# 使用集合来创建,集合本身是无序的
pd.Index({"x","y","z"})

Out[7]:

Index(['z', 'x', 'y'], dtype='object')

pd.RangeIndex

生成一个区间内的索引,主要是基于Python的range函数,其语法为:

43c2b09ac9a90015a570cd6288f9ed94.png
pandas.RangeIndex(
  start=None,  # 起始值,默认为0
  stop=None,  # 终止值
  step=None,  # 步长,默认为1
  dtype=None,  # 类型
  copy=False,  # 是否生成副本
  name=None)  # 名称

下面通过多个例子来讲解:

In [8]:

pd.RangeIndex(8)  # 默认start是0,步长是1

默认结果中起始值是0,结束值是8(不包含),步长是1:

Out[8]:

RangeIndex(start=0, stop=8, step=1)

In [9]:

pd.RangeIndex(0,8)  # 指定start和stop

Out[9]:

RangeIndex(start=0, stop=8, step=1)

改变步长为2:

In [10]:

pd.RangeIndex(0,8,2)

Out[10]:

RangeIndex(start=0, stop=8, step=2)

In [11]:

list(pd.RangeIndex(0,8,2))

将结果用list显示出来,没有包含stop的值8:

Out[11]:

[0, 2, 4, 6]

下面的案例中将步长改成-1:

In [12]:

pd.RangeIndex(8,0,-1)

Out[12]:

RangeIndex(start=8, stop=0, step=-1)

In [13]:

list(pd.RangeIndex(8,0,-1))

Out[13]:

[8, 7, 6, 5, 4, 3, 2, 1]  # 结果中不包含0

pd.Int64Index

指定数据类型是int64整型

pandas.Int64Index(
  data=None,  # 生成索引的数据
  dtype=None,  # 索引类型,默认是int64
  copy=False,  # 是否生成副本
  name=None)  # 使用名称

In [14]:

pd.Int64Index([1,2,3,4])

Out[14]:

Int64Index([1, 2, 3, 4], dtype='int64')

In [15]:

pd.Int64Index([1,2.0,3,4])  # 强制转成int64类型

Out[15]:

Int64Index([1, 2, 3, 4], dtype='int64')

In [16]:

pd.Int64Index([1,2,3,4],name="Peter")

Out[16]:

Int64Index([1, 2, 3, 4], dtype='int64', name='Peter')

如果在数据中包含小数则会报错:

In [17]:

# pd.Int64Index([1,2,3,4.4])  # 出现小数则报错
3163ac0d5c26bbb29f6f871b15f16bb3.png

pd.UInt64Index

数据类型是无符号的UInt64

pandas.UInt64Index(
  data=None, 
  dtype=None, 
  copy=False, 
  name=None
)

In [18]:

pd.UInt64Index([1, 2, 3, 4])

Out[18]:

UInt64Index([1, 2, 3, 4], dtype='uint64')

In [19]:

pd.UInt64Index([1, 2, 3, 4],name="Tom")  # 指定名字

Out[19]:

UInt64Index([1, 2, 3, 4], dtype='uint64', name='Tom')

In [20]:

pd.UInt64Index([1, 2.0, 3, 4],name="Tom")

Out[20]:

UInt64Index([1, 2, 3, 4], dtype='uint64', name='Tom')
# 存在小数则报错
pd.UInt64Index([1, 2.4, 3, 4],name="Tom")
962c428ddd26634a3ea7715de30e9391.png

pd.Float64Index

数据类型是Float64位的浮点型,允许小数出现:

pandas.Float64Index(
  data=None,  # 数据
  dtype=None,  # 类型
  copy=False,  # 是否生成副本
  name=None  # 索引名字
)

In [22]:

pd.Float64Index([1, 2, 3, 4])

Out[22]:

Float64Index([1.0, 2.0, 3.0, 4.0], dtype='float64')

In [23]:

pd.Float64Index([1.5, 2.4, 3.7, 4.9])

Out[23]:

Float64Index([1.5, 2.4, 3.7, 4.9], dtype='float64')

In [24]:

pd.Float64Index([1.5, 2.4, 3.7, 4.9],name="peter")

Out[24]:

Float64Index([1.5, 2.4, 3.7, 4.9], dtype='float64', name='peter')

注意:在Pandas1.4.0的版本中,上面3个函数全部统一成了pd.NumericIndex方法。

pd.IntervalIndex

pd.IntervalIndex(
  data,  # 待生成索引的数据(一维)
  closed=None,  # 区间的哪边是关闭状态,{‘left’, ‘right’, ‘both’, ‘neither’}, default ‘right’
  dtype=None,  # 数据类型
  copy=False,  #  生成副本
  name=None,  # 索引的名字
  verify_integrity=True  # 判断是否符合
)

新的 IntervalIndex 通常使用interval_range()函数来进行构造,基本用法:

In [24]:

pd.interval_range(start=0, end=6)

Out[24]:

IntervalIndex([(0, 1], (1, 2], (2, 3], (3, 4], (4, 5], (5, 6]],
              closed='right',  # 默认情况下右边是关闭的
              dtype='interval[int64]')

In [25]:

pd.interval_range(start=0, end=6, closed="neither")  # 两边都不关闭

Out[25]:

IntervalIndex([(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)],
              closed='neither',
              dtype='interval[int64]')

In [26]:

pd.interval_range(start=0, end=6, closed="both")  # 两边都关闭

Out[26]:

IntervalIndex([[0, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, 6]],
              closed='both',
              dtype='interval[int64]')

In [27]:

pd.interval_range(start=0, end=6, closed="left")  # 左边关闭

Out[27]:

IntervalIndex([[0, 1), [1, 2), [2, 3), [3, 4), [4, 5), [5, 6)],
              closed='left',
              dtype='interval[int64]')

In [28]:

pd.interval_range(start=0, end=6, name="peter")

Out[28]:

IntervalIndex([(0, 1], (1, 2], (2, 3], (3, 4], (4, 5], (5, 6]],
              closed='right',
              name='peter',
              dtype='interval[int64]')

pd.CategoricalIndex

pandas.CategoricalIndex(
  data=None,   # 数据
  categories=None,  # 分类的数据
  ordered=None,  # 是否排序
  dtype=None,   # 数据类型
  copy=False,   # 副本
  name=None)  # 名字

在下面的例子中我们以一批衣服的尺码作为模拟数据:

In [29]:

# 指定数据
c1 = pd.CategoricalIndex(["S","M","L","XS","M","L","S","M","L","XL"])
c1

Out[29]:

CategoricalIndex(
  # 数据
    ['S', 'M', 'L', 'XS', 'M', 'L', 'S', 'M', 'L', 'XL'], 
    # 出现的不同元素
    categories=['L', 'M', 'S', 'XL', 'XS'],  
    # 默认不排序 
    ordered=False,
    # 数据类型
    dtype='category'
    )

In [30]:

c2 = pd.CategoricalIndex(
    ["S","M","L","XS","M","L","S","M","L","XL"],
    # 指定分类的数据
    categories=["XS","S","M","L","XL"]
)

c2

Out[30]:

CategoricalIndex(
 ['S', 'M', 'L', 'XS', 'M', 'L', 'S', 'M', 'L', 'XL'], 
 categories=['XS', 'S', 'M', 'L', 'XL'], 
 ordered=False, 
 dtype='category'
 )

In [31]:

c3 = pd.CategoricalIndex(
    # 数据
    ["S","M","L","XS","M","L","S","M","L","XL"],
    # 分类名字
    categories=["XS","S","M","L","XL"],
    # 确定排序
    ordered=True
)

c3

Out[31]:

CategoricalIndex(
 ['S', 'M', 'L', 'XS', 'M', 'L', 'S', 'M', 'L', 'XL'], 
 categories=['XS', 'S', 'M', 'L', 'XL'], 
 ordered=True,  # 已经排序
 dtype='category')

In [32]:

c4 = pd.CategoricalIndex(
    # 待排序的数据
    ["S","M","L","XS","M","L","S","M","L","XL"],
    # 指定分类顺序
    categories=["XS","S","M","L","XL"],
    # 排序
    ordered=True,
    # 索引名字
    name="category"
)

c4

Out[32]:

CategoricalIndex(
 ['S', 'M', 'L', 'XS', 'M', 'L', 'S', 'M', 'L', 'XL'], 
 categories=['XS', 'S', 'M', 'L', 'XL'], 
 ordered=True, 
 name='category', 
 dtype='category'
 )

CategoricalIndex 索引对象也可以从 Categorical() 方法进行实例化得到:

In [33]:

c5 = pd.Categorical(["a", "b", "c", "c", "b", "c", "a"])

pd.CategoricalIndex(c5)

Out[33]:

CategoricalIndex(
 ['a', 'b', 'c', 'c', 'b', 'c', 'a'], 
 categories=['a', 'b', 'c'], 
 ordered=False,  # 默认不排序
 dtype='category')

In [34]:

pd.CategoricalIndex(c5, ordered=True)  # 指定排序

Out[34]:

CategoricalIndex(
 ['a', 'b', 'c', 'c', 'b', 'c', 'a'], 
 categories=['a', 'b', 'c'], 
 ordered=True, # 排序
 dtype='category')

pd.DatetimeIndex

以时间和日期作为索引,通过date_range函数来生成,具体语法为:

pd.DatetimeIndex(
  data=None,  # 数据
  freq=NoDefault.no_default,  # 频率
  tz=None,  #  时区
  normalize=False,  # 是否归一化 
  closed=None,  # 区间是否关闭
  # ‘infer’, bool-ndarray, ‘NaT’, 默认‘raise’
  ambiguous='raise',  
  dayfirst=False,  # 第一天
  yearfirst=False,  # 第一年
  dtype=None,  # 数据类型
  copy=False,  # 副本
  name=None  # 名字
)

以时间和日期作为索引,通过date_range函数来生成,具体例子为:

In [35]:

# 默认天为频率
pd.date_range("2022-01-01",periods=6)

Out[35]:

DatetimeIndex(
 ['2022-01-01', '2022-01-02', 
  '2022-01-03', '2022-01-04',
  '2022-01-05', '2022-01-06'],
  dtype='datetime64[ns]', 
  freq='D'  # 频率
  )

In [36]:

# 日期作为索引,D代表天
d1 = pd.date_range(
"2022-01-01",
periods=6, 
freq="D")
d1

Out[36]:

DatetimeIndex(
 ['2022-01-01', '2022-01-02', 
  '2022-01-03', '2022-01-04',
  '2022-01-05', '2022-01-06'],
  dtype='datetime64[ns]', 
  freq='D')

In [37]:

# H代表小时
pd.date_range("2022-01-01",periods=6, freq="H")

Out[37]:

DatetimeIndex(
 ['2022-01-01 00:00:00', '2022-01-01 01:00:00',
  '2022-01-01 02:00:00', '2022-01-01 03:00:00',
  '2022-01-01 04:00:00', '2022-01-01 05:00:00'],
  dtype='datetime64[ns]', 
  freq='H')

In [38]:

# M代表月
pd.date_range("2022-01-01",periods=6, freq="3M")

Out[38]:

DatetimeIndex(
 ['2022-01-31', '2022-04-30', 
  '2022-07-31','2022-10-31',
  '2023-01-31', '2023-04-30'],
  dtype='datetime64[ns]', 
  freq='3M')

In [39]:

# Q代表季度

pd.date_range("2022-01-01",periods=6, freq="Q")

显示的结果中以一个季度-3个月为频率:

Out[39]:

DatetimeIndex(
 ['2022-03-31', '2022-06-30', 
  '2022-09-30','2022-12-31',
  '2023-03-31', '2023-06-30'],
 dtype='datetime64[ns]', 
 freq='Q-DEC')

In [40]:

# 指定时区tz

pd.date_range("2022-01-01",periods=6, tz="Asia/Calcutta")

Out[40]:

DatetimeIndex(
 ['2022-01-01 00:00:00+05:30', '2022-01-02 00:00:00+05:30',
  '2022-01-03 00:00:00+05:30', '2022-01-04 00:00:00+05:30',
  '2022-01-05 00:00:00+05:30', '2022-01-06 00:00:00+05:30'],
  dtype='datetime64[ns, Asia/Calcutta]', freq='D')

pd.PeriodIndex

pd.PeriodIndex是一个专门针对周期性数据的索引,方便针对具有一定周期的数据进行处理,具体用法如下:

pd.PeriodIndex(
  data=None,  # 数据
  ordinal=None,  # 序数
  freq=None,  # 频率
  dtype=None,  # 数据类型
  copy=False,  # 副本
  name=None,  # 名字
  **fields
)

生成pd.PeriodIndex对象的方式1:指定开始时间、周期频率

In [41]:

pd.period_range('2022-01-01 09:00', periods=5, freq='H')

Out[41]:

PeriodIndex(
['2022-01-01 09:00', '2022-01-01 10:00', 
'2022-01-01 11:00','2022-01-01 12:00', '2022-01-01 13:00'],
dtype='period[H]', freq='H')

In [42]:

pd.period_range('2022-01-01 09:00', periods=6, freq='2D')

Out[42]:

PeriodIndex(
['2022-01-01', '2022-01-03', 
'2022-01-05', '2022-01-07',
'2022-01-09', '2022-01-11'],
dtype='period[2D]', 
freq='2D')

In [43]:

pd.period_range('2022-01', periods=5, freq='M')

Out[43]:

PeriodIndex(
['2022-01', '2022-02', 
'2022-03', '2022-04', '2022-05'], 
dtype='period[M]', freq='M')

In [44]:

p1 = pd.DataFrame(
    {"name":["xiaoming","xiaohong","Peter","Mike","Jimmy"]},
    # 指定索引
    index=pd.period_range('2022-01-01 09:00', periods=5, freq='3H')
)

p1
391c575c8e47f4a4a9a7868a46453c57.png

生成pd.PeriodIndex对象的方式2:直接使用pd.PeriodIndex方法

In [45]:

pd.PeriodIndex(
['2022-01-01', '2022-01-02', 
'2022-01-03', '2022-01-04'], 
freq = '2H')

Out[45]:

PeriodIndex(
['2022-01-01 00:00', '2022-01-02 00:00', 
'2022-01-03 00:00','2022-01-04 00:00'],
dtype='period[2H]', freq='2H')

In [46]:

pd.PeriodIndex(
['2022-01', '2022-02', 
'2022-03', '2022-04'], 
freq = 'M')

Out[46]:

PeriodIndex(
['2022-01', '2022-02', 
'2022-03', '2022-04'], 
dtype='period[M]', 
freq='M')

In [47]:

pd.PeriodIndex(['2022-01', '2022-07'], freq = 'Q')

Out[47]:

PeriodIndex(
['2022Q1', '2022Q3'], 
dtype='period[Q-DEC]', 
freq='Q-DEC')

生成pd.PeriodIndex对象的方式3:利用date_range函数先生成DatetimeIndex对象

In [48]:

data = pd.date_range("2022-01-01",periods=6)
data

Out[48]:

DatetimeIndex(
['2022-01-01', '2022-01-02', 
'2022-01-03', '2022-01-04',
'2022-01-05', '2022-01-06'],
dtype='datetime64[ns]', 
freq='D')

In [49]:

pd.PeriodIndex(data=data)

Out[49]:

PeriodIndex(
['2022-01-01', '2022-01-02', 
'2022-01-03', '2022-01-04',
'2022-01-05', '2022-01-06'],
dtype='period[D]', freq='D')

In [50]:

p2 = pd.DataFrame(np.random.randn(400, 1),
             columns=['number'],
             # 指定索引
             index=pd.period_range('2021-01-01 8:00',
                                   periods=400,
                                   freq='D'))
p2
1c7e5d87b9f475d953282f74fadd1a51.png

pd.TimedeltaIndex

pd.TimedeltaIndex(
  data=None,  # 数据
  unit=None,  # 最小单元
  freq=NoDefault.no_default,  # 频率 
  closed=None,  # 指定关闭的位置
  dtype=dtype('<m8[ns]'),  # 数据类型
  copy=False,  # 副本
  name=None  # 名字
)

创建方式1:指定数据和最小单元

In [51]:

pd.TimedeltaIndex([12, 24, 36, 48], unit='s')

Out[51]:

TimedeltaIndex(
 ['0 days 00:00:12', '0 days 00:00:24', 
 '0 days 00:00:36','0 days 00:00:48'],
 dtype='timedelta64[ns]', 
 freq=None)

In [52]:

pd.TimedeltaIndex([1, 2, 3, 4], unit='h') # 按小时

Out[52]:

TimedeltaIndex(
 ['0 days 01:00:00', '0 days 02:00:00', 
 '0 days 03:00:00','0 days 04:00:00'],
 dtype='timedelta64[ns]', 
 freq=None)

In [53]:

pd.TimedeltaIndex([12, 24, 36, 48], unit='h')

Out[53]:

TimedeltaIndex(
 ['0 days 12:00:00', '1 days 00:00:00', 
 '1 days 12:00:00','2 days 00:00:00'],
 dtype='timedelta64[ns]', # 数据类型
 freq=None)

In [54]:

pd.TimedeltaIndex([12, 24, 36, 48], unit='D')

Out[54]:

TimedeltaIndex(
 ['12 days', '24 days', '36 days', '48 days'], 
 dtype='timedelta64[ns]', freq=None)

创建方式2:通过timedelta_range函数来间接生成

In [55]:

data1 = pd.timedelta_range(start='1 day', periods=4)
data1

Out[55]:

TimedeltaIndex(['1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq='D')

In [56]:

pt1 = pd.TimedeltaIndex(data1)

pt1

Out[56]:

TimedeltaIndex(
 ['1 days', '2 days', '3 days', '4 days'], 
 dtype='timedelta64[ns]', freq='D')

In [57]:

data2 = pd.timedelta_range(start='1 day', end='3 days', freq='6H')
data2

Out[57]:

TimedeltaIndex(
 ['1 days 00:00:00', '1 days 06:00:00', '1 days 12:00:00',
  '1 days 18:00:00', '2 days 00:00:00', '2 days 06:00:00',
  '2 days 12:00:00', '2 days 18:00:00', '3 days 00:00:00'],
  dtype='timedelta64[ns]', freq='6H')

In [58]:

pt2 = pd.TimedeltaIndex(data2)

pt2

Out[58]:

a3ee2c8e740057dc479e7f7e27e2f117.png
往期精彩回顾




适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载中国大学慕课《机器学习》(黄海广主讲)机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑
AI基础下载机器学习交流qq群955171419,加入微信群请扫码:

354e2e3343e35a3244a97edaad59e0ea.png

如何在Pandas中使用透视表后去掉多级索引 Pandas是一个功能强大且通用的Python库,用于数据操作和分析。它最有用的特性之一是数据透视表,它允许您重塑和汇总数据。但是,使用数据透视表通常会导致多级(分层)索引,这可能很麻烦。在本文中,我们将探讨如何在Pandas中使用透视表后去掉多级索引,使您的数据更容易处理和分析。 阅读详情

相关推荐

Python Pandas库的日期时间索引操作

在数据分析的世界里,时间是一个非常重要的因素。很多数据都和时间相关,比如股票价格的变化、气温的波动等。Pandas库提供了强大的日期时间索引功能,能够让我们更方便地处理和分析这些与时间相关的数据。本文的目的就是详细介绍Pandas库中日期时间索引的各种操作方法,范围涵盖从基本的创建到复杂的重采样等操作。本文首先会介绍日期时间索引的核心概念,包括相关术语和它们之间的关系。接着通过代码示例展示日期时间索引的核心算法原理和具体操作步骤。然后介绍日期时间索引在数学模型中的应用和相关公式。

AI Python 编程之道的博客 732

Python Pandas 第2章 索引

import numpy as np import pandas as pd df = pd.read_csv('data/table.csv',index_col='ID') df.head() Out[1]: School Class Gender Address Height Weight Math Physics ID 1101 S_1 C_1 M street_1 173 63 34.0 A+ 1102 S_1 C_1 F street_2 192 73 32.5 B+ 1103

假装你是大灰狼的专栏 1454

Python pandas学习总结

Python pandas学习总结   pandas是做数据分析非常重要的一个模块,它使得数据分析的工作变得更快更简单。由于现实世界中数据源的格式非常多,但是pandas也支持了不同数据格式的导入方法,所以学习pandas非常有必要。 要是想看所有的方法详解可以去官网,要想学习Pandas建议先看下面2个网站。   官网地址如下:https://pandas.pydata.org/   官网教程如...

Alden_Wei的博客 2640

【Python】数据分析+数据挖掘——探索Pandas中的索引与数据组织

在数据科学和数据分析领域,Pandas是一个备受喜爱的Python库。它提供了丰富的数据结构和灵活的工具,帮助我们高效地处理和分析数据。其中,索引在Pandas中扮演着关键角色,它是一种强大的数据组织和访问机制,使我们能够更好地理解和操作数据。本博客将探讨Pandas中与索引相关的核心知识点和常用操作。我们将了解如何设置和重置索引,通过索引来选择和过滤数据,以及如何利用多级索引来处理复杂的层次结构数据。

知识虔诚的信徒,探索所有未知是信徒毕生的信仰 1万+

【python Pandas】索引操作

在Pandas中,Index是数据结构中的一部分,用于标识Series或DataFrame中的行标签。索引不仅可以使数据的访问更加高效,还能够实现数据的选择、过滤、对齐和重排等多种操作。Pandas中的索引包括行索引和列索引,可以根据需要自定义或操作它们。你可以把索引看作是表格的“标签”,它帮助你快速找到和管理数据。默认情况下,Pandas会给数据添加一组数字索引,但你也可以根据数据内容来设置自己的标签。索引不仅能帮助你定位数据,还能对数据进行排序、分组等操作。

m0_62599305的博客 830

【python Pandas】DataFrame索引设置

在Pandas中,DataFrame的索引(Index)是指行标签的集合,类似于数据库中的主键或Excel表格中的行号。DataFrame可以有自定义的索引,索引不一定是默认的整数索引。设置合适的索引可以帮助我们更加高效地访问和操作数据。Pandas提供了多种方法来设置、修改和重置DataFrame的索引。你可以把DataFrame的索引看作是表格的“行标题”,它帮助你快速找到数据。默认情况下,Pandas会自动生成数字索引,但你也可以根据数据内容来设置你想要的行标题(索引)。

m0_62599305的博客 1057

Python——数据分析三剑客之 Pandas 入门笔记

导包两种创建方式由列表或Numpy数组创建由字典创建。

Even的博客 2006

Qwen3.5在昇腾NPU上部署:vLLM-Ascend全链路实战

大语言模型推理框架(如vLLM)通过PagedAttention等内存调度机制,显著提升显存利用率与吞吐性能;国产AI芯片(如昇腾NPU)需配套专用算子优化与硬件感知调度才能释放真实算力。本文聚焦Qwen3.5大语言模型在昇腾平台的端到端部署,深入解析vLLM-Ascend如何协同CANN工具链、适配RoPE位置编码与Tokenizer映射、调优block_size与kv_cache_dtype等关键参数,实现单卡42 tokens/s高吞吐与112ms低延迟。内容覆盖环境验证、源码编译、模型权重转换、服务

weixin_34335458的博客 279

Python 数据分析三剑客之 Pandas(二):Index 索引对象以及各种索引操作

优快云 课程推荐:《迈向数据科学家:带你玩转Python数据分析》,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员;已出版《跟老齐学Python:轻松入门》《跟老齐学Python:Django实战》、《跟老齐学Python:数据分析》和《Python大学实用教程》畅销图书。 Pandas 系列文章: Python 数据分析三剑客之 Pandas(一):认识 Pandas 及其 Series、DataFrame 对象 Python 数据分析三剑客之 P

marraybug的博客 1081

亚博k210视觉模块与stm32双向通信

【代码】亚博k210视觉模块与stm32双向通信。

w_150831的博客 3246

ECB oracle——attack

基于ECB oracle的攻击方案前言什么是ECB方案步骤1.确定块大小和明文大小2.暴力破解求明文脚本代码 前言 参考文章:Breaking ECB by prepending your own message. 环境地址:ECB oracle 什么是ECB 分组密码中AES的一种模式(其他还有:CBC、ECB、CTR、OCF、CFB)如图每一块加密是分开的。 方案步骤 1.确定块大小和明文大小 先用一个字符"a"去encrypt返回32个字节的数据(64位16进制)依次用"aa",“aaa”…去en

weixin_44617902的博客 1311

快速认识Pandas的10大索引

快速认识Pandas的10大索引 公众号:尤而小屋作者:Peter编辑:Peter 大家好,我是Peter~ 今天给大家带来一篇关于Pandas的基本文章:10种你必须掌握的Pandas索引。 索引在我们的日常生活中其实是很常见的,就像: 一本书有自己的目录和具体的章节,当我们想找某个知识点,翻到对应的章节即可; 也像图书馆中的书籍被分类成文史类、技术类、小说类等,再加上书籍的编号,很快就能够找到我们想要的书籍。 外出吃饭点菜的菜单,从主食类、饮料/汤类、凉菜类等,到具体的菜名等 上面不同的常用都可

尤尔小屋 4547

数学建模:相关性分析学习——皮尔逊(pearson)相关系数与斯皮尔曼(spearman)相关系数

相关性分析:求解相关系数并绘制热力图进行对比

weixin_67565775的博客 8万+

精通Pandas索引操作,看这篇就够了!

思维导图 import numpy as np import pandas as pd df = pd.read_csv('data/table.csv',index_col="ID") df.head() 一、单级索引 1. loc方法、iloc方法、[]操作符 最常用的索引方法可能就是这三类,其中iloc表示位置索引,loc表示标签索引,[]也具有很大的便利性,各有特点 (a)loc方法(注...

OuDiShenmiss的博客 3942

大华 DSS 数字监控系统 itcBulletin SQL 注入漏洞复现

大华 DSs 数字监控系统是大华开发的一款安防视频监控系统,拥有实时监视、云台操作、录像回放、报警处理、设备管理等功能。大华 DSS存在SQL注入漏洞,攻击者 pota/services/itcBuletin 路由发送特殊构造的数据包,利用报错注入获取数据库敏感信息。攻击者除了可以利用 SQL注入漏词获取数据库中的信息例如,管理员后台密码、站点的用户人人信息)之外,甚至在高权限的情况可向服务器中写入木马,进一步获取服务器系统权限poc验证是否存在漏洞如果你想查询用户名和密码。

holyxp的博客 4003

Scale-up,scale-out技术概述

本文系统分析了Scale-up与Scale-out两种扩展技术在现代计算中的应用与发展。Scale-up通过增强单节点性能,适用于高耦合任务,而Scale-out通过横向扩展节点,实现高可用性和无限扩展。在芯片层面,Chiplet技术推动Scale-up发展;在数据中心层面,二者协同工作构建强大集群。光模块在长距离高带宽传输中发挥关键作用。文章对比了NVIDIA、AMD和Broadcom三家公司的技术路线,指出NVIDIA采用封闭生态,AMD选择开放标准,Broadcom则主导底层连接技术。未来发展方向将聚

元直的博客 1446

【Python数据分析】Pandas_索引

在数据分析的过程中,我们把大部分时间都花费在数据的准备和预处理上,Pandas 作为一个灵活、高效的数据预处理工具,提供了诸多数据处理的方法,分层索引(Multiple Index)就是其中之一,分层索引(或多层索引)是 Pandas 的基本特性,它能够增强 Pands 数据预处理的能力。分层索引(Multiple Index)是 Pandas 中非常重要的索引类型,它指的是在一个轴上拥有多个(即两个以上)索引层数,这使得我们可以用低维度的结构来处理更高维的数据。下面介绍几种创建分层索引的方式。

qq_45951891的博客 1950

Qt入门教程【数据类型篇】数值类型

Qt中的数值类型

小鱼酱的博客 1万+

pandas-索引

一、单级索引 1. loc方法、iloc方法、[]操作符 最常用的索引方法可能就是这三类,其中iloc表示位置索引,loc表示标签索引,[]也具有很大的便利性,各有特点 (a)loc方法(注意:所有在loc中使用的切片全部包含右端点!) ① 单行索引: df.loc[1103] ② 多行索引: df.loc[[1102,2304]] df.loc[1304:] df.loc...

wjsjjss的博客 1088

逆强化学习:从专家示范中学习策略

逆强化学习(Inverse Reinforcement Learning,简称IRL)是强化学习(Reinforcement Learning,简称RL)的一个子领域,它的目标是从专家的行为中学习策略。在传统的强化学习中,智能体通过与环境交互,根据奖励信号来学习一个策略。而在逆强化学习中,我们没有直接的奖励信号,而是通过观察专家的行为来推断出奖励函数,从而学习到一个与专家类似的策略。逆强化学习作为强化学习的一个重要子领域,在许多实际应用场景中都取得了显著的成功。

AI天才研究院 1452

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Pandas中DataFrame重置索引

在Pandas中,自定义索引后,有时候又需要恢复默认索引。 import pandas as pd import numpy as np df = pd.DataFrame(np.arange(20).reshape(5,4),columns=['a','b','c','d']) df a b c d 0 0 1 2 3

fightingoyo的博客 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

8 个例子帮你快速掌握 Pandas 索引操作

如果您使用Python作为数据处理的语言,那么pandas很可能是你代码中使用最多的库之一。pandas的关键数据结构是DataFrame,这是一个类似电子表格的数据表,由行和列组成。在处理dataframe时,我们经常需要处理索引,这可能很棘手。在本文中,让我们回顾一些关于用pandas处理索引的技巧。 在读取时指定索引列 在许多情况下,我们的数据源是一个CSV文件。假设我们有一个名为data.csv的文件,它有以下数据。 date,temperature,humidity 07/01/21,95,50

deephub 3361

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python快速入门Pandas库

本期文章会讲解有关Python Pandas库的数据结构、数据操作、数据清洗等方面的知识,带领大家快速入门Pandas库。

one_bad_day的博客 1324

Python pandas,Series取值,Series切片,Series的index和values属性,布尔索引

  demo.py(Series取值,切片): import pandas as pd t1 = pd.Series([13, 23, 33, 43, 53], index=["a", "b", "c", "d", "e"]) print(t1) ''' a 13 b 23 c 33 d 43 e 53 dtype: int64 ''' # 通过索引直接取...

houyanhua1的专栏 7万+

pandas 索引去重_pandas索引对象

Python的pandas 数组如何得到索引值,如图,我要得b['state'].index("ohio") 返回TypeError: 'Int64Index' object is not 直接上实例: df = pd.DataFrame(np.random.randn(5,3),index = list('abcde'),columns = ['one','two','three']) #创建一...

weixin_29635919的博客 561

Python 学习笔记 -- Python Pandas 行列索引

Python 学习笔记 – Python Pandas 行列索引 在dataframe里面分为行索引和列索引。 行索引:index 列索引:columns 我们创建一个最基础的dataframe: df = pd.DataFrame({'A': [0, 1, 2], 'B': [3, 4, 5]}) 当需要查看,进一步对行列索引进行其他操作的时候,就可以用index和columns啦(ง •_•)ง data.index data.columns ...

weixin_44167173的博客 1857
上一篇: 【学术相关】中国霸榜AI顶会,但引用量最低!最新斯坦福AI指数出炉!
下一篇: 【论文解读】用Dropout思想做特征选择保证效果,还兼顾了线上性能?
风度78
博客等级 码龄19年 4164粉丝 331原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值