精华内容
下载资源
问答
  • pandas库是基于numpy构建的,所以其中的数据类型具有许多的相似之处,这里我们研究ndarray和DataFrame这两种数据结构在索引方面的方法,并做一些基本的对比,...先抛出结论:对于DataFrame对象,其只有直接的df[][...

    转自:https://blog.csdn.net/s_o_l_o_n/article/details/80875804

    pandas库是基于numpy构建的,所以其中的数据类型具有许多的相似之处,这里我们研究ndarray和DataFrame这两种数据结构在索引方面的方法,并做一些基本的对比,以此让我们更好的记忆和理解相应的索引方法。先抛出结论:对于DataFrame对象,其只有直接的df[][]索引和ndarray不一样,此时DataFrame先索引的是列,而不是行,也没有df[i,j]的索引方法,但是对于切片索引以及df.iloc的索引方法,和ndarray完全一样;此外,DataFrame还有df.loc的标签索引方法。

           首先对于ndarray,如图定义一个二维的ndarray对象,则arr[i]和arr[i][j](等价于arr(i,j))都可以表示索引,其中arr[i]表示行索引,arr[i][j]表示有顺序的先进行第一个维度的索引(即行),再进行第二个维度的索引(即对应的行中的元素);同理的,对于三维的ndarray也是如此,arr[i][j][k](等价于arr(i,j,k))表示一次在第1、2、3维度上的索引。这里只是要注意在ndarray中,降维时,指标的从左到右对应维度的从外到内,故如果是三维ndarray,arr[0]对应第一个截面,以此类推。

           当然,ndarray还可以进行切片索引,比如arr[0,:]表示第一行,arr[:,0]表示第一列。

    对于DataFrame,如图定义一个DataFrame对象df.虽然同ndarray类似,都有类似的索引方式,但是直接索引的内容却不一样,比如df['a']得到第一列,这里不同于arr[i],对于DataFrame对象,直接的df[i]索引,得到的是第i+1列,而不是第i+1行,因此df['a'][2]会得到8,之所以会如此定义,是为了在实际中使用的方便。要注意的是,DataFrame对象没有df[i,j]的索引方式。
     

      但是,当进行切片索引的时候,比如重新定义如下的df,切片索引又同ndarray一样,df[:2]得到前两行,而不是前两列;df[:][:1]得到第一列。故在切片索引的时候,又和ndarray一样了。此外,DataFrame对象还有索引方法df.iloc[]和df.loc[],前者是对index和columns为整数时的所以,后者是对index和columns为其他标签时的索引;对于df.iloc[],其索引方式和ndarray完全一样,既可以以df.iloc[i][j]的方式索引,也可以以df.iloc[i,j]的方式索引,当然也可以直接的df.iloc[i]的方式索引。
    因此,综上可知,对于DtaFrame对象,其只有直接的df[][]索引和ndarray不一样,此时DataFrame先索引的是列,而不是行,也没有df[i,j]的索引方法,但是对于切片索引以及df.iloc的索引方法,和ndarray完全一样;此外,DataFrame还有df.loc的标签索引方法

    展开全文
  • 索引包括行索引和列索引数据序列可以是不同数据类型:数值、字符串、布尔值等)通过阅读本篇内容,你将掌握:创建第一个DataFrame对象head、tail方法对于大型DataFrame对象,其head(n)、tail(n)方法,显示数据头n行,...

    Pandas DataFrame数据对象

    Dataframe数据类似于二维矩阵的数据表

    Dataframe对象由索引+N个数据序列组成:

    • 索引包括行索引和列索引
    • 数据序列可以是不同数据类型:数值、字符串、布尔值等)

    通过阅读本篇内容,你将掌握:

    b68d667b8a8c5edd2a622ae04d883f55.png

    创建第一个DataFrame对象

    4cebec59cc61f793216228b297d77876.png

    head、tail方法

    对于大型DataFrame对象,其head(n)、tail(n)方法,显示数据头n行,尾n行,默认是5行

    Series赋值

    使用Series对DataFrame对象某一列进行赋值,Series对索引将会按照DataFrame的索引重新排列,不存在的索引赋值缺省值

    13cf7f09d8fa633412117806d65250b6.png

    删除列操作

    使用del关键字可以删除DataFrame对象一个列

    5bb9e9c2ef249b067457e05309d6cccb.png

    name、values属性

    • DataFrame对象行索引和列索引拥有name属性
    • DataFrame对象的values属性值以ndarray的形式返回
    0b26f11037a49af3d7f059e06d65b650.png

    isnull、notnull方法

    同样也支持这两种方法,用来检查DataFrame对象缺失数据

    ae8aa426575b73a50250dbad4f196c24.png

    构造DataFrame对象

    • 基于数组、元组结构的字典
    fc0ca8dd79833a4a098bc8874cb6a66b.png
    • 基于字典构成的字典
    50e827170f21fb085ee18c79778c74f1.png
    • 基于Series结构的字典
    9df44d08a7d5f53f9e011cc1983f8e9c.png
    • 基于Numpy结构的数组
    02e9f7f2b698bd997332d0c08651609e.png
    • 基于一个2维的ndarray
    d0f40ce2040a1bbd8c943014d7337851.png
    • 基于另一个DataFrame对象
    472c210b410a9d9296373de777093d9a.png
    • 其他方法

    基于字典或Series构成的列表

    基于列表或元组构成的列表

    最后

    如果内容有误,欢迎评论区指正!

    喜欢我的朋友们,麻烦点一波关注,谢谢!

    展开全文
  • 对于一个dataframe对象df,假定你要取出某一行,不能使用df[i]。 dataframe取出某一行:df.ix[i]或者df.iloc[i] dataframe取出前两行:df.[0:2] dataframe取出某一列:df.loc[‘A’]或者df[‘A’] dataframe取出某行...

    对于一个dataframe对象df,假定你要取出某一行,不能使用df[i]。
    dataframe取出某一行:df.ix[i]或者df.iloc[i]
    dataframe取出前两行:df.[0:2]
    dataframe取出某一列:df.loc[‘A’]或者df[‘A’]
    dataframe取出某行某列:df[i,j]

    参考链接:https://blog.csdn.net/tanlangqie/article/details/78656588

    展开全文
  • 对于绝大多数情况下,我使用的 read_excel , read_csv 或 read_sql 。 但是,有些情况下我只需要几行数据或包含这些数据里的一些计算。 在这些情况下,了解如何从标准python列表或字典创建DataFrames会很有帮助。 ...
  • 从pandas DataFrame生成配置文件报告。 pandas df.describe()函数虽然功能强大,但对于进行认真的探索性数据分析却有些基础。 pandas_profiling使用df.profile_report()扩展了pandas DataFrame,以进行快速数据分析...
  • 0.引子 现实世界中,当需要对数据进行处理时,到手的数据文件往往...Python为我们提供了强大的数据分析处理工具,如果文件中的句符合格式要求,可以使用pandas模块中的各种read对象直接读取,例如对于iris.data ...

    实际应用中,对数据进行处理时,到手的数据文件往往五花八门,data、txt、csv、json等等。Python为我们提供了强大的数据分析处理工具,如果文件符合某种格式要求,可以使用pandas模块中的各种read方法直接读取。例如大名鼎鼎的鸢尾花数据集iris.data,使用Notepad++打开文件观察数据,可见:
    在这里插入图片描述
    从图中可以看出,没有表头,字段清晰,分隔符均为逗号,因此可直接使用read_csv方法将数据读取为Dataframe对象,再通过Dataframe对象进行各种操作:

    df = pd.read_csv('e:\iris.data',header=None)
    # 查看数据前5行
    df.head()
    # 读取后100个数据的第2和第3列数据作为特征
    X = df.iloc[-100:,[2,3]].values
    # 读取后100个数据的第4列元素作为数据标签
    y = df.iloc[-100:,4].values

    如果遇到不这么标准的数据是否能够这样操作?例如这个StoneFlakes.dat:
    在这里插入图片描述
    文件中既包含表头又有数据字段,分隔符包括数量不等的空格、逗号以及空格+逗号,如果直接使用read_csv方法读取肯定无法准确的获取数据。解决办法就是直接使用open()方法对文件进行按行读取,再根据文件结构解析数据。如下:

    import numpy as np 
    import pandas as pd 
    from pandas import DataFrame
    
    datalist = []
    columnlist = []
    with open('e:\data\StoneFlakes.dat','r') as of:
        # 获取第一行表头数据    
        firstline = of.readline()    
        # 删除字符串头尾的特定字符    
        firstline = firstline.strip('\n')    
        # 将字符串按照空格进行分割    
        columnlist = firstline.split()

    按照该表格结构,第一行为表头数据,故首先使用open()方法打开文件,返回一个TextIOWrapper对象,使用其中的readline()方法返回一行文本数据,再使用strip()方法删除首尾可能存在的换行符或其他不需要的符号,最后使用split方法按照空格作为分割符将字符串分割为列表,从而获得表格的列名。之后可对数据进行读取。

        for line in of:        
        	# 清除前后回车符,按照空格进行分割
        	line = line.strip('\n').split()        		
        	

    由于数据中的分割符较为复杂,包含空格和逗号的各种组合,采取的策略是多次分割。通过对数据观察发现,大部分数据是以逗号作为分隔符,但是少量逗号分割符前面包含空格,同时第1列和第2列之间的分隔符均为数量不等的空格。所以对每一行文本,先以空格为分隔符进行分解,得到数量较少但长度较长的多个字段。同样先试用stripe(’\n’)方法除去首尾的换行符,再使用split()方法按照空格为分割符进行分割。此时得到的列表中的元素即为严格以逗号为分隔符的字符串,如下:

    ['ar', '?,35.30,2.60,', '?,42.4,24.2,47.1,69']

    之后再按照逗号对每个字符串进行分割,最后将得到的多个列表串联,得到了包含该行所有数据元素的列表,如下:

            linelist = []        
            for str in line:            
                # 按照‘,’进行分割            
                # 字符串前后可能还有',',需要先清除            
                linelist = linelist + (str.strip(',').split(','))                		
             datalist.append(linelist)

    由于有的字段是以逗号结尾,需要先试用strip(’,’)方法去除,再使用split(’,’)方法以逗号为分割符进行分割。得到每一行数据的列表后,通过append方法组合为一个二维的列表,结合之前获取的表头列表,用以构建Dataframe对象。如下

    df = DataFrame(datalist, columns=columnlist)
    df
         ID   LBI    RTI   WDI  FLA   PSF   FSF  ZDF1 PROZD
    0    ar     ?  35.30  2.60    ?  42.4  24.2  47.1    69
    1   arn  1.23  27.00  3.59  122   0.0  40.0  40.0    30
    2    be  1.24  26.50  2.90  121  16.0  20.7  29.7    72
    3   bi1  1.07  29.10  3.10  114  44.0   2.6  26.3    68
    4   bi2  1.08  43.70  2.40  105  32.6   5.8  10.7    42
    ..  ...   ...    ...   ...  ...   ...   ...   ...   ...
    
    [79 rows x 9 columns]

    此时得到Dataframe对象准确的包含了原始文件中的数据,满足进行下一步的操作要求。

    展开全文
  • 每当我使用pandas进行分析时,我的第一个目标是使用众多可用选项中的一个将数据导入Pandas的DataFrame对于绝大多数情况下,我使用的 read_excel , read_csv 或 read_sql 。 但是,有些情况下我只需要几行数据或...
  • 介绍每当我使用pandas进行分析时,我的第一个目标是使用众多可用选项中的一个将数据导入Pandas的DataFrame对于绝大多数情况下,我使用的 read_excel , read_csv 或 read_sql 。但是,有些情况下我只需要几行数据...
  • dataframe

    2018-08-30 20:58:19
    一、查看数据(查看对象的方法对于Series来说同样适用) 1.查看DataFrame前xx行或后xx行 a=DataFrame(data); a.head(6)表示显示前6行数据,若head()中不带参数则会显示全部数据。 a.tail(6)表示显示...
  • DataFrame的一行或一列,都是Series类型的对象对于行来说,Series对象的name属性值就是行索引名称,其内部元素的值,就是对应的列索引名称。对于列来说,Series对象的name属性值就是列索引名称,其内部元素的值,...
  • dataframe与RDD

    2019-07-24 16:44:56
    RDD是分布式的 Java对象的集合,比如,RDD[Person]是以Person为类型参数,但是,Person类的内部结构对于RDD而言却是不可知的。 DataFrame是一种以RDD为基础的分布式数据集,也就是分布式的Row对象的集合(每个Row...
  • 对于RDD,DataFrame和Dataset具有很多优势,比如说DataFram增加了Schema信息,类似于关系数据库中表,而且对于这种数据结构的操作性能方面也有提升。创建 RDD首先使用sparkContext.parallelize() 函数将Seq对象...
  • 对于一个已经建好的DataFrame对象,想要调整它的列索引顺序。 使用.reindex(columns=)方法 同理,使用.reindex(index=)方法,可以调整它的行索引顺序。 总结:千万不要认为reindex仅仅是给索引...
  • pandas dataframe类型操作

    2019-08-07 11:31:00
    用python做数据分析pandas库介绍之DataFrame基本操作 怎样删除list中空字符? ...最简单的方法:new_list = [ x for x in li if x...一、查看数据(查看对象的方法对于Series来说同样适用) 1.查看DataFrame前x...
  • dataframe的object类型

    2020-11-26 11:23:44
    首先,我们构造一个dataframe来看一下它的数据类型:  实际上dtype对象来自NumPy,它描述了ndarray中元素的类型。ndarray中的每个元素的字节大小必须相同。对于int64和float64,它们是8字节。所以col2和col3系统...
  • pd库dataframe基本操作

    2018-05-31 16:22:00
    一、查看数据(查看对象的方法对于Series来说同样适用) 1.查看DataFrame前xx行或后xx行 a=DataFrame(data); a.head(6)表示显示前6行数据,若head()中不带参数则会显示全部数据。 a.tail(6)表示显示后6行数据,...
  • 对于pandas DataFrame对象通常用“对象名.drop()”方法删去行或列,但drop操作必须先知道想要删除的列名和索引。 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展...
  • pandas库之DataFrame基本操作

    万次阅读 2018-08-31 16:15:24
    转自:http://www.jianshu.com/p/75f915cc5147 一丶查看数据(查看对象的方法对于Series来说同样适用 1.查看DataFrame前xx行或后xx行 a=DataFrame(data); a.head(6)表示显示...
  • df 为dataframe对象,包含'word', 'count'两列数据 方法一 result_dic = df.groupby('word')['count'].apply(list).to_dict() # 对于同一个key对应多个value,则把同一key的value构成一个list result_dic = df....
  • 这一部分主要学习pandas中Series和DataFrame基本操作。设有DataFrame结果的数据a...three 6 1 6一、查看数据(查看对象的方法对于Series来说同样适用)1.查看DataFrame前xx行或后xx行a=DataFrame(data);a.head(6)...
  • DataFrame 表格型数据对象 DataFrame数据框架是一种二维数据结构,即数据按行和列的表格方式排列。 DataFrame的创建 可以使用以下构造函数创建一个pandas DataFrame - pandas.DataFrame( data, index, columns, ...
  • python DataFrame的apply方法使用详解

    千次阅读 2019-09-17 21:09:24
    我自己对于apply方法的理解是:其最重要的参数是传入的函数,传入的函数会对DataFrame的每一行(index)或每一列(column)进行操作,然后返回每一个index或column对应的值,再将这些行(或者列)以及其对应的返回值...
  • python中pandas库中DataFrame操作

    千次阅读 2018-01-17 18:43:55
    一、查看数据(查看对象的方法对于Series来说同样适用) 1.查看DataFrame前xx行或后xx行 a=DataFrame(data); a.head(6)表示显示前6行数据,若head()中不带参数则会显示全部数据。 a.tail(6)表示显示后6行数据...
  • 对于spark来说,并不知道RDD元素的内部结构,仅仅知道元素本身的类型,只有用户才了解元素的内部结构,才可以进行处理、分析;但是spark知道DataSet元素的内部结构,包括字段名、数据类型等。这为spark对数据操作...
  • pandas库介绍之DataFrame基本操作

    万次阅读 2017-07-10 12:07:34
    转自:... 这一部分主要学习pandas中Series和DataFrame基本操作。 设有DataFrame结果的数据a如下所示: a b c one 4 1 1 two 6 2 0 ...一、查看数据(查看对象的方法对于Series来说同样
  • 一、查看数据(查看对象的方法对于Series来说同样适用) 1.查看DataFrame前xx行或后xx行 a=DataFrame(data); a.head(6)表示显示前6行数据,若head()中不带参数则会显示全部数据。 a.tail(6)表示显示后6行数据,若...
  • Pandas库下DataFrame的一些基本操作

    千次阅读 2018-04-20 15:54:06
    这一部分主要学习pandas中基于前面两种数据结构的基本操作。...three 6 1 6一、查看数据(查看对象的方法对于Series来说同样适用)1.查看DataFrame前xx行或后xx行a=DataFrame(data);a.head(6)表示显示前...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 147
精华内容 58
关键字:

对于dataframe对象