精华内容
下载资源
问答
  • python数据框索引
    千次阅读
    2019-07-02 13:32:33

    #生成一个带有自定义索引的数据框
    from pandas import DataFrame
    df=DataFrame({
            'age':[22,23,24],
            'name':['Penny','Frank','Dylan']
            },
            index=['第一','第二','第三'])
    #按列访问
    df['age']
    df[['age','name']]
    #访问第二行的数据
    df[1:2]
    #根据索引访问数据(注意中括号的数量)
    df.loc[['第一','第二','第三']]
    #根据行列号访问数据
    df.iloc[0:1,0:1]
    #精确定位,按行索引,按列访问
    df.at['第一','name']
    #修改列名
    df.columns
    df.columns=['age2','name2']
    #修改行索引
    df.index
    df.index=range(1,4)
    #根据行索引删除,根据axis判断行列,0是行,1是列
    df.drop(1,axis=0)
    #根据列名进行删除
    df.drop('name2',axis=1)
    #增加行(该方法效率较低)
    df.loc[len(df)]=[25,'Wayne']
    #增加列
    df['new']=[180,178,190]

    更多相关内容
  • 我有一个以下数据框df,其中包含两列“identifier”,“values”和“subid”:identifier values subid0 1 101 11 1 102 12 1 103 2 #index in list x3 1 10...

    我有一个以下数据框df,其中包含两列“identifier”,“values”和“subid”:

    identifier values subid

    0 1 101 1

    1 1 102 1

    2 1 103 2 #index in list x

    3 1 104 2

    4 1 105 2

    5 2 106 3

    6 2 107 3

    7 2 108 3

    8 2 109 4 #index in list x

    9 2 110 4

    10 3 111 5

    11 3 112 5

    12 3 113 6 #index in list x

    比方说,我有一份指数清单

    x = [2, 8, 12]

    我想在列表x中提到的索引之前插入行.例如,对于在索引2之前插入的行将具有以下值,它将具有与索引2处的行相同的标识符,即1;与索引2处的行相同的值,即103;但是新行中的subid将是((在索引2处为subid)-1),或者只是前一行中的subid,即1.

    以下是我期望的最终结果:

    identifier values subid

    0 1 101 1

    1 1 102 1

    2 1 103 1 #new row inserted

    3 1 103 2 #index in list x

    4 1 104 2

    5 1 105 2

    6 2 106 3

    7 2 107 3

    8 2 108 3

    9 2 109 3 #new row inserted

    10 2 109 4 #index in list x

    11 2 110 4

    12 3 111 5

    13 3 112 5

    14 3 113 5 #new row inserted

    15 3 113 6 #index in list x

    我一直在尝试的代码:

    m = df.index #storing the indices of the df

    #m

    for i in m:

    if i in x: #x is the given list of indices

    df.iloc[i-1]["identifier"] = df.iloc[i]["identifier"]

    df.iloc[i-1]["values"] = df.iloc[i]["values"]

    df.iloc[i-1]["subid"] = (df.iloc[i]["subid"]-1)

    df

    上面的代码只是替换(i-1)索引处的行而不是插入具有上述值的其他行.请帮忙.

    如果有任何不清楚的地方,请告诉我.

    展开全文
  • python建立数据库索引 介绍 (Introduction) The Python and NumPy indexing operators [] and attribute operator ‘.’ (dot) provide quick and easy access to pandas data structures across a wide range of ...

    python建立数据库索引

    介绍 (Introduction)

    The Python and NumPy indexing operators [] and attribute operator ‘.’ (dot) provide quick and easy access to pandas data structures across a wide range of use cases. The index is like an address, that’s how any data point across the data frame or series can be accessed. Rows and columns both have indexes.

    Python和NumPy索引运算符[]和属性运算符'。 (点)可在各种用例中快速轻松地访问熊猫数据结构。 索引就像一个地址,这就是如何访问数据帧或系列中的任何数据点。 行和列都有索引。

    The axis labeling information in pandas objects serves many purposes:

    pandas对象中的轴标签信息有许多用途:

    • Identifies data (i.e. provides metadata) using known indicators, important for analysis, visualization, and interactive console display.

      使用已知的指标标识数据(即提供元数据),这对于分析,可视化和交互式控制台显示很重要。
    • Enables automatic and explicit data alignment.

      启用自动和显式数据对齐。
    • Allows intuitive getting and setting of subsets of the data set.

      允许直观地获取和设置数据集的子集。

    索引和选择数据的不同选择 (Different Choices for indexing and selecting data)

    Object selection has had several user-requested additions to support more explicit location-based indexing. Pandas now support three types of multi-axis indexing for selecting data.

    对象选择具有一些用户请求的添加项,以支持更明确的基于位置的索引。 熊猫现在支持三种类型的多轴索引来选择数据。

    # import the pandas library and aliasing as pd import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(6, 3), index = ['a','b','c','d','e','f'], columns = ['A', 'B', 'C']) print (df.loc['a':'f'])
    Image for post

    How to check the values is positive or negative in a particular row. For that we are giving condition to row values with zeros, the output is a boolean expression in terms of False and True. False means the value is below zero and True means the value is above zero.

    如何检查特定行中的值是正还是负。 为此,我们给具有零的行值提供条件,输出是一个布尔表达式,用False和True表示。 False表示该值小于零,True表示该值大于零。

    # for getting values with a boolean array print (df.loc['a']>0)

    As we see in the above code that with .loc we are checking the value is positive or negative with boolean data. In row index 'a' the value of the first column is negative and the other two columns are positive so, the boolean value is False, True, True for these values of columns.

    正如我们在上面的代码中看到的那样,使用.loc我们正在检查布尔数据的值是正还是负。 在行索引“ a”中,第一列的值为负,其他两列的值为正,因此,这些列的布尔值分别为False,True,True。

    Then, if we want to just access the only one column then, we can do with the colon. The colon in the square bracket tells the all rows because we did not mention any slicing number and the value after the comma is B means, we want to see the values of column B.

    然后,如果我们只想访问仅一列,则可以使用冒号。 方括号中的冒号表示所有行,因为我们没有提到任何切片编号,并且逗号后的值是B表示我们想查看列B的值。

    print df.loc[:,'B']# import the pandas library and aliasing as pd import pandas as pd import numpy as np df1 = pd.DataFrame(np.random.randn(8, 3),columns = ['A', 'B', 'C']) # select all rows for a specific column print (df1.iloc[:8])

    In the above small program, the .iloc gives the integer index and we can access the values of row and column by index values. To know the particular rows and columns we do slicing and the index is integer based so we use .iloc. The first line is to want the output of the first four rows and the second line is to find the output of two to three rows and column indexing of B and C.

    在上面的小程序中, .iloc给出整数索引,我们可以按索引值访问row和column的值。 要知道我们要切片的特定行和列,并且索引是基于整数的,因此我们使用.iloc 。 第一行是要获得前四行的输出,第二行是要找到B至C的两到三行和列索引的输出。

    # Integer slicing print (df1.iloc[:4]) print (df1.iloc[2:4, 1:3])import pandas as pd import numpy as np df2 = pd.DataFrame(np.random.randn(8, 3), columns = ['A', 'B', 'C']) # Integer slicing print (df2.ix[:4])

    query()方法 (The query() Method)

    DataFrame objects have a query() method that allows selection using an expression. You can get the value of the frame where column b has values between the values of columns a and c.

    DataFrame对象具有query()方法,该方法允许使用表达式进行选择。 您可以获得框架的值,其中b列的值介于a列和c列之间。

    For example:

    例如:

    #creating dataframe of 10 rows and 3 columns df4 = pd.DataFrame(np.random.rand(10, 3), columns=list('abc')) df4

    The condition given in the below code is to check that x is smaller than b and b is smaller than c. If both the condition is true then print the output. With this condition, only one row passed the condition.

    以下代码中给出的条件是检查x小于b且b小于c。 如果两个条件都成立,则打印输出。 在这种情况下,只有一行通过了该条件。

    Give the same conditions to the query function. If we compare these two condition the query syntax is simple than data frame syntax.

    给查询函数相同的条件。 如果我们将这两个条件进行比较,则查询语法比数据帧语法简单。

    #with query() df4.query('(x < b) & (b < c)')

    重复资料 (Duplicate Data)

    If you want to identify and remove duplicate rows in a Data Frame, two methods will help: duplicated and drop_duplicates.

    如果要标识和删除数据框中的重复行,则可以使用两种方法: 重复drop_duplicates

    • duplicated: returns a boolean vector whose length is the number of rows, and which indicates whether a row is duplicated.

      重复:返回布尔矢量,其长度为行数,并指示是否重复一行。

    • drop_duplicates: removes duplicate rows.

      drop_duplicates:删除重复的行。

    Creating a data frame in rows and columns with integer-based index and label based column names.

    使用基于整数的索引和基于标签的列名称在行和列中创建数据框。

    df5 = pd.DataFrame({'a': ['one', 'one', 'two', 'two', 'two'], 'b': ['x', 'y', 'x', 'y', 'x'], 'c': np.random.randn(5)}) df5

    We generated a data frame in pandas and the values in the index are integer based. and three columns a,b, and c are generated. here we checked the boolean value that the rows are repeated or not. For every first time of the new object, the boolean becomes False and if it repeats after then, it becomes True that this object is repeated.

    我们以熊猫为单位生成了一个数据框,索引中的值基于整数。 并生成三列a,b和c。 在这里,我们检查了是否重复行的布尔值。 对于新对象的每次第一次,布尔值都将变为False,然后在此之后重复,则此对象重复将变为True。

    df5.duplicated('a')

    The difference between the output of two functions, one is giving the output with boolean and the other is removing the duplicate labels in the dataset.

    两个函数的输出之间的区别,一个是给输出提供布尔值,另一个是删除数据集中的重复标签。

    df5.drop_duplicates('a')

    结论: (Conclusion:)

    There are a lot of ways to pull the elements, rows, and columns from a DataFrame. There is some indexing method in Pandas which helps in selecting data from a DataFrame. These are by far the most common ways to index data. The .loc and .iloc indexers use the indexing operator to make selections.

    有很多方法可以从DataFrame中提取元素,行和列。 Pandas中有一些索引方法,可帮助您从DataFrame中选择数据。 到目前为止,这些是索引数据的最常用方法。 .loc.iloc索引器使用索引运算符进行选择。

    You can reach me at my LinkedIn link here and on my email: [email protected]

    你可以在我的LinkedIn链接到我这里和我的邮箱: [电子邮件保护]

    My Previous Articles:

    我以前的文章:

    1. Robotic Vision in Agriculture

      农业机器人视觉

    2. Interesting 10 Machine Learning and Data Science Projects with Datasets

      有趣的10个带有数据集的机器学习和数据科学项目

    3. Basic Understanding of NLP With Python

      使用Python对NLP的基本了解

    翻译自: https://medium.com/analytics-vidhya/indexing-and-selecting-data-in-python-b09515127b40

    python建立数据库索引

    展开全文
  • 多层索引是Pandas中一个比较核心的概念,允许你在一个轴向上拥有多个索引层级,许多同学不能处理复杂的数据,最大的问题在于没法灵活的处理多层索引。 import pandas as pd s = pd.Series([1, 2, 3, 4, 5, 6], ...

    索引的创建,取值,排序

    1.多层索引的创建

    多层索引是Pandas中一个比较核心的概念,允许你在一个轴向上拥有多个索引层级,许多同学不能处理复杂的数据,最大的问题在于没法灵活的处理多层索引

    import pandas as pd
    
    s = pd.Series([1, 2, 3, 4, 5, 6],
                  index=[['张三', '张三', '李四', '李四', '王五', '王五'],
                         ['期中', '期末', '期中', '期末', '期中', '期末']])
    print(s)
    

    ✨效果

    张三  期中    1
        期末    2
    李四  期中    3
        期末    4
    王五  期中    5
        期末    6
    dtype: int64
    

    从图中数据可以看出,张三那一列是数据的第一层索引,期中那一列是数据的第二层索引,而第二层索引值是和数据一一对应的。

    但是,我们在创建的时候发现,也需要将名字和考试阶段一一对应,才可以。

    🚩现在,我们将数据增加几个科目的成绩,演示DataFrame多层索引的创建方法。

    由于成绩的数据比较多,我们将使用numpy的随机数方法构建成绩数据。
    numpy会在后续中讲解,现在大家先体验一下,如何使用numpy构建实验数据:

    import pandas as pd
    import numpy as np
    #size参数是指定生成6行3列的数组
    data = np.random.randint(0,100,size=(6,3))
    names = ['张三','李四','王五']
    exam = ['期中','期末']
    index = pd.MultiIndex.from_product([names,exam])
    df = pd.DataFrame(data,index=index,columns=['Java','Web','Python'])
    df
    

    ✨下面是运行的效果,我用表格形式来为大家展示

    JavaWebPython
    张三期中843557
    期末963692
    李四期中42564
    期末475576
    王五期中813474
    期末548169

    我们虽然成功的创建了DataFrame的多层索引,但是有一个问题,在设置索引的时候会有很多重复的索引值,如何才能简化索引的写法呢?

    Pandas为了解决这个问题,提供了一个创建多层索引的构造方法。

    pd.MultiIndex.from_product()构建索引的方式

    首先,确定每一层索引的值什么,然后以列表的形势传给from_product()方法即可。

    import pandas as pd
    import numpy as np
    
    data = np.random.randint(0,100,size=(6,3))
    names = ['张三','李四','王五']
    exam = ['期中','期末']
    index = pd.MultiIndex.from_product([names,exam])
    df = pd.DataFrame(data,index=index,columns=['Java','Web','Python'])
    print(df)
    

    ✨效果
    在这里插入图片描述
    我们成功创建了DataFrame的多层索引,而且你会发现,我们只需要关注每层索引的值都有哪些就可以了。

    [names,exam]列表中的位置不同,产生的索引也会不同。

    import pandas as pd
    import numpy as np
    
    data = np.random.randint(0,100,size=(6,3))
    names = ['张三','李四','王五']
    exam = ['期中','期末']
    index = pd.MultiIndex.from_product([exam,names])
    df = pd.DataFrame(data,index=index,columns=['Java','Web','Python'])
    print(df)
    

    ✨效果

    在这里插入图片描述
    🚩经过上面的两段代码,下面我们一起总结一下:

    1. 第一:from_product([exam,names])会将列表中第一个元素作为最外层索引,依次类推;

    2. 第二:列表中元素值的对应关系,如下图:

    在这里插入图片描述

    2.多层索引的取值

    创建不是我们的目的,我们的目的是如何从多层索引中获取到我们想要的数据。

    看下面的代码

    import pandas as pd
    s = pd.Series([1,2,3,4,5,6],index=[['张三','张三','李四','李四','王五','王五'],
                                       ['期中','期末','期中','期末','期中','期末']])
    print(s)
    

    可以直接使用[]的方式取最外面的一个层级s[‘张三’]
    在这里插入图片描述

    🚩注意:[]取值方式,不可直接使用最外层以外的其他层级,例如:s[‘期末’],并且[‘张三’,‘期末’]他们的顺序不能变。

    不知道大家是否还记得loc和iloc的使用?

    loc使用的是标签索引,iloc使用的是位置索引。
    loc的使用方式和[]的方式基本一样:

    在这里插入图片描述
    但是,iloc的取值并不会受多层索引影响,只会根据数据的位置索引进行取值。

    import pandas as pd
    import numpy as np
    #size参数是指定生成6行3列的数组
    data = np.random.randint(0,100,size=(6,3))
    names = ['张三','李四','王五']
    exam = ['期中','期末']
    index = pd.MultiIndex.from_product([names,exam])
    df = pd.DataFrame(data,index=index,columns=['Java','Web','Python'])
    df.iloc[0]
    

    ✨效果

    Java      84
    Web       35
    Python    57
    Name: (张三, 期中), dtype: int32
    

    在对多层索引DataFrame的取值是,我们推荐使用loc()函数。
    同时对一二级索引进行检索:

    df.loc['张三'].loc['期中']
    

    ✨效果

    Java      84
    Web       35
    Python    57
    Name: 期中, dtype: int32
    
    df.loc[('张三','期中')]
    

    ✨效果

    Java      84
    Web       35
    Python    57
    Name: (张三, 期中)
    dtype: int32
    

    🚩注意:DataFrame中对行索引的时候和Series有一个同样的注意点,就是无法直接对二级索引直接进行索引,必须让二级索引变成一级索引后才能对其进行索引!

    3.多层索引的排序

    有时候,我们需要将分组或创建出来的多层索引数据,根据索引值进行排序。
    我们先创建一个简单的多层索引数据:

    import pandas as pd
    data = np.random.randint(0, 100, size=(9, 3))
    key1 = ['b', 'c', 'a']
    key2 = [2, 1, 3]
    index = pd.MultiIndex.from_product([key1, key2])
    df = pd.DataFrame(data, index=index, columns=['Java', 'Web', 'Python'])
    df
    

    ✨效果

    JavaWebPython
    a2197014
    127614
    3932746
    b2358887
    1233199
    3599017
    c2734058
    1148687
    310575

    DataFrame按行索引排序的方法是sort_index(),接下来我们看一下sort_index()是如何对多层索引进行排序。

    默认状态下的排序:

    df.sort_index()
    

    ✨效果
    在这里插入图片描述
    通过结果可以看出每一层都会根据索引值进行相应的升序排列。

    df.sort_index()中的level参数可以指定是否按照指定的层级进行排列,第一层级索引值为0,第二层级索引值为1。

    当level=0时,会根据第一层索引值进行降序排序:df.sort_index(level=0, ascending=False)
    ✨效果
    在这里插入图片描述
    通过上面的几个排序发现,可以通过level设置排序的索引层级,其他层索引也会根据其排序规则进行排序。

    当level=1时,会根据第二层索引值进行降序排序:

    ✨效果

    JavaWebPython
    c310575
    b3599017
    a3932746
    c2148687
    b2233199
    a227614
    c1734058
    b1358887
    a1197014

    通过结果可以看出数据会根据第二层索引值进行相应的降序排列,如果索引值相同时会根据其他层索引值排列。


    若有学习问题可加qq:2024810652

    展开全文
  • 数据分析中经常需要选取固定的行列,在Excel中可以使用鼠标进行点选,但是敲命令的时候,例如python和R中不方便使用鼠标,这就需要灵活掌握数据索引。如果数据索引不能熟练操作,就看不懂代码,后面的数据分析...
  • 根据python中的索引数据框获取值

    千次阅读 2020-11-26 10:21:54
    data2[1][0][5:00] 但它给了我空数据帧的结果Empty DataFrame Columns: [L, U] Index: [] 我尝试a = data2 [5:00]时甚至很奇怪,它给了我:Empty DataFrame Columns: [(1, 0, L), (1, 0, U), (1, 1, L), (1, 1, U), ...
  • I have created a Dataframe df by merging 2 lists using the following command:import pandas as pddf=pd.DataFrame({'Name' : list1,'Probability' : list2})But I'd like to remove the first column (The inde...
  • 细致的朋友可能会发现一个现象,不论是序列也好,还是数据框也好,对象的最左边总有一个非原始数据对象,这个是什么呢?不错,就是我们接下来要介绍的索引
  • 转载:python数据框的操作

    千次阅读 2021-01-12 10:46:55
    我们接着上次分享给大家的两篇文章:Python数据分析之numpy学习(一)和Python数据分析之numpy学习(二),继续讨论使用Python中的pandas模块进行数据分。在接下来的两期pandas介绍中将学习到如下8块内容:1、数据结构...
  • Python数据分析—数据排序

    千次阅读 2020-12-25 22:14:41
    python对表格数据进行排序。
  • 使用python3,软件为ipython notebook loc,iloc,ix,query函数的操作简介
  • 创建一个示例数据框: import pandas as pd df = pd.DataFrame([['乔峰', '男', 95, '降龙十八掌', '主角'], ['虚竹', '男', 93, '天上六阳掌', '主角'], ['段誉', '男', 92, '六脉神剑', '主角'], ['王语嫣', '...
  • 1、对数据框中的某字段设置为新索引 Pay_Data = Pay_Data.set_index(Pay_Data['工号']) # 将工号设置为新索引 2、重新定义行索引 Pay_Data = Pay_Data .reset_index(drop=True) # 重新定义行索引 3、重获取...
  • 在数据科学领域python逐渐火热起来,超越了原有R的地位,...主要是对几个主要的数据框索引函数进行讲解和使用,相关的解释都已经在代码里面了,就不再多解释了,配合着我给出来的例子相信还是很容易理解的,下面是...
  • 它是由一组数据和一对索引(行索引和列索引)组成的二维数据结构,可以看成Excel里的表格,与Series不同的是,DataFrame可以有多行/列数据。1.建首先要导入pandas模块,简写为pd。In [1]:import pandas as pd从列表中...
  • 我有一个数据框,如下所示:company Amazon Apple YahoonameA 0 130 0C 173 0 0Z 0 0 150它是使用以下代码创建的:import pandas as pddf = pd.DataFrame({'name' : ['A', 'Z...
  • PYTHON_设置索引

    千次阅读 2020-10-26 18:30:39
    data.reset_index(inplace=True,drop=False)#drop=true 直接丢弃之前的索引,否则生成一个列名为‘INDEX’的列,如果这个索引本身有名字的话,则生成一个有名字的列 #3.更改索引列的名字 data.index.name='index2' ...
  • python数据框的常用操作

    千次阅读 2020-11-22 17:19:40
    1、数据框去除重复data1 = data1.drop_duplicates()pd.dataframe.drop_duplicates(self,subset=None,keep='first',inplace=False)参数含义:subse:接受特定的字符串或者sequence。表示进行去重的列。默认为None,...
  • Python Pandas 重建索引

    2021-02-11 05:45:58
    重新索引意味着符合数据以匹配特定轴上的一组给定的标签。 可以通过索引来实现多个操作 -重新排序现有数据以匹配一组新的标签。在没有标签数据的标签位置插入缺失值(NA)标记。import pandas as pdimport numpy as ...
  • python各种类型数据格式的索引小结

    千次阅读 2022-04-20 22:20:12
    3.不管什么类型的数据格式,索引均用[ ] 4.对于多维数组索引,最好采用X[ ][ ]的形式来写 列表list 数组numpy 一维数组 多维数组 numpy模块中where类下的索引 元组tuple 注意:元组是不支持修改的,但是...
  • 头歌Python数据框、序列定义及数据处理应用实验闯关
  • 一、索引索引的主要作用是对数据做切片,能够从pandas的对象中选取数据子集。1、loc: 基于数据标签,如果标签值不存在,会抛出KeyError单个的标签值列表或者数组的标签值切片范围数据 (基于索引名称,不属于前闭...
  • python 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown...
  • 我有两个不同的数据框.首先,我必须检查df1中的数据是否与df2相匹配.如果是这种情况,它将添加一列“ isRep” = true,否则等于false.它为我创建了df3.现在,我需要在df3中添加一个与索引相对应的“ idRep”列,并使用...
  • python数据处理----修改索引和行列

    千次阅读 2022-04-19 21:03:39
    修改索引 修改索引之前是自动生成的索引: 使用set_index('以xx字段为索引',inplace=True)设置索引: inplace为True不用给新变量赋值,使用旧的变量名发现索引就已经被改变 打开文件时就生成索引: index_col='以...
  • 数据框是一种二维数据结构,其中数据以表格格式存储,以行和列的形式。它可以可视化为SQL数据表或excel工作表表示形式。可以使用以下构造函数创建它-pd.Dataframe(data,index,columns,dtype,copy)可以以不同方式将新...
  • 二、Pandas数据框操作及数据提取 #导包 import pandas as pd import numpy as np 数据框行列操作 1.1 创建DataFrame data = {"col1":['Python', 'C', 'Java', 'R', 'SQL', 'PHP', 'Python', 'Java', 'C', 'Python...
  • 2、数据框拼接(ignore_index=True,重新分配索引) # 两种方式,concat、append皆可以 result3=pd.concat([result1,result2],ignore_index=True) result3=result1.append(result2,ignore_index=...
  • Pandas的reset_index()重置索引

    万次阅读 2021-02-09 14:32:26
    来源:pandas中的reset_index()数据清洗时,会将带空值的行删除,此时DataFrame或Series类型的数据不再是连续的索引,可以使用reset_index()重置索引。import pandas as pdimport numpy as npdf = pd.DataFrame(np.a...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,662
精华内容 26,664
关键字:

python数据框索引