精华内容
下载资源
问答
  • 2021-11-03 15:32:50

    1、collect():

    print(dataframe.collect()[index])

    2、dataframe.first()

    3、dataframe.head(num_rows)、dataframe.tail(num_rows),head、tail配合使用可以取得中间指定位置的行

    4、dataframe.select([columns]).collect()[index]

    5、dataframe.take(num_rows),同head()方法

    转自:https://www.geeksforgeeks.org/get-specific-row-from-pyspark-dataframe/

    更多相关内容
  • pandas取dataframe特定行/列 2021-11-12

    千次阅读 2021-11-12 18:37:14
    import numpy as np from pandas import DataFrame ...从中取出特定的行/列可以使用.loc()函数。但是.loc()有一个特性,与普通的python切片不同,起止位置的内容都会被包括。 Note that contrary to usual python ..
    import numpy as np
    from pandas import DataFrame
    import pandas as pd
    df=pd.DataFrame(np.random.randn(5,3),index = range(5), columns = list('abc'))
    df

     从中取出特定的行/列可以使用.loc()函数。但是.loc()有一个特性,与普通的python切片不同,起止位置的内容都会被包括。

    Note that contrary to usual python slices, both the start and the stop are included.

     注意到df.loc[0:4,'a'],输出了5个元素。

    如果不习惯这种设定,有没有其他办法呢?有的,还是切片。

    这里就可以看到df[0:4]['a'],只输出了4个元素,符合我们对于python数组的使用习惯。

    切片的其他一些用法对于DataFrame结构也是成立的。比如:

     

     以及

     

    更复杂的情况比如加入列表推导式之类,暂时还没有遇到,遇到之后再继续研究了。

     

    展开全文
  • 示例·使用已存在的RDD数据集创建DataFrame: >>> 5.2 DataFrame的常见操作 printSchema:打印数据集的结构 show:打印数据集的数据 collect:返回所有的记录 select:选择某几列(返回值是DataFrame) XX.age:...

    c47326bf15abbd638b8be1d13881e8e5.png

    1 文章说明

    需要用到spark,特地写一个文章作为入门总结。

    环境介绍:

    • 系统:centos7
    • python:python2.7.5
    • java:java1.8.0
    • hadoop:hadoop2.7
    • spark:spark3.0
    • 参考文档:http://spark.apache.org/docs/latest/quick-start.html

    2 spark简介

    简单地说,spark扩展了MapReduce计算模型,数据在内存中并行式计算。

    3 安装spark

    ①验证java是否安装:java -version,已安装为java1.8.0。

    ②验证Scala是否安装:scala -version。

    如果未安装scala,scala的安装步骤:

    • 1)下载scala,下载网址:https://www.scala-lang.org/download/,本次选择了scala-2.13.1.tgz文件。
    • 2)执行命令tar -zxvf scala-2.13.1.tgz。
    • 3)设置环境变量:切换到root账户,在/etc/profile文件中配置export SCALA_HOME=/home/grid/scala和export PATH=$PATH:$SCALA_HOME/bin,然后source /etc/profile,gird账户也需要source /etc/profile。
    • 4)scala -version验证是否安装成功。

    ③下载和安装spark:

    • 1)本次下载的是spark-3.0.0-preview-bin-hadoop2.7.tgz。
    • 2)解压文件,tar -zxvf spark-3.0.0-preview-bin-hadoop2.7.tgz。
    • 3)输入spark-shell进入到spark,python使用pyspark进入。

    4 RDD弹性分布式数据集

    4.1 RDD基本概念

    RDD,resilient distributed dataset,弹性分布式数据集。spark的RDD是不可变的、分布式的数据集合。

    1. RDD会被划分为多个分区,运行在集群的不同节点。
    2. RDD的数据类型可以是java、scala、python的数据类型,也可以是用户自定义的。
    3. 定义RDD时,spark会惰性计算这些值。只有spark开始转化操作时,了解到完整的数据转化链,才会去计算,计算真正需求的数据。
    4. 每当我们调用一个新的行动操作时,整个 RDD 都会从头开始计算。要避免这种低效的行为,用户可以将中间结果持久化。
    5. 如果不重用 RDD,就没有必要浪费存储空间,再加上“在定义RDD时spark惰性计算的”,也就是说数据并没有加载,需要时直接重新计算,这就是为什么称之为“弹性”。

    4.2 创建RDD

    两种方式:

    读取外部数据集:textFile函数可以加载一个外部数据集。

    使用已存在的数据集:把已有集合传递给SparkContext.parallelize函数。

    创建RDD示例:(使用Python语言)

    >>> 

    4.3 RDD的两种操作

    RDD的两种操作是:

    转化操作:返回一个新的RDD的操作。

    行动操作:向程序返回结果或把结果写入外部系统的操作,会触发实际的计算。

    转化操作和行动操作的示例:使用filter函数过滤“python”、“java”相关的行,使用union函数合并这些行,使用take函数触发计算。

    >>> 

    注:省略部分输出结果。

    4.4 向spark传递函数

    可以传递lambda表达式、局部函数。

    注意:传递类的函数时,不要直接写http://self.XXX,要复制给一个变量,因为spark会把整个对象发到工作节点。

    传递函数示例

    >>> 

    4.5 常见的转化操作和行动操作

    常见的RDD转化操作:

    • map():将函数应用于 RDD 中的每个元素,将返回值构成新的 RDD
    • flatMap():将函数应用于 RDD 中的每个元素,将返回的迭代器的所有内容构成新的 RDD。通常用来切分单词
    • filter():返回一个由通过传给 filter()的函数的元素组成的 RDD
    • distinct():去重
    • sample(withReplacement, fraction, [seed]):对 RDD 采样,以及是否替换
    • union():生成一个包含两个 RDD 中所有元素的 RDD
    • intersection():求两个 RDD 共同的元素的 RDD
    • subtract():移除一个 RDD 中的内容(例如移除训练数据)
    • cartesian():与另一个 RDD 的笛卡儿积

    常见的RDD行动操作:

    • collect() 返回 RDD 中的所有元素
    • count() RDD 中的元素个数
    • countByValue() 各元素在 RDD 中出现的次数
    • take(num) 从 RDD 中返回 num 个元素
    • top(num) 从 RDD 中返回最前面的 num个元素
    • takeOrdered(num)(ordering)从 RDD 中按照提供的顺序返回最前面的 num 个元素
    • takeSample(withReplacement, num, [seed])从 RDD 中返回任意一些元素
    • reduce(func) 并 行 整 合 RDD 中 所 有 数 据(例如 sum)
    • fold(zero)(func) 和 reduce() 一 样, 但 是 需 要提供初始值
    • aggregate(zeroValue)(seqOp, combOp)和 reduce() 相 似, 但 是 通 常返回不同类型的函数
    • foreach(func) 对 RDD 中的每个元素使用给定的函数

    4.6 持久化

    对 RDD 执行行动操作,每次都会重新计算RDD,这个时候可以使用persist函数对数据进行持久化。

    出于不同的目的,我们可以为 RDD 选择不同的持久化级别:MEMORY_ONLY、DISK_ONLY等。

    持久化示例

    >>> 

    5 DataFrame

    DataFrame是基于RDD,并且支持SparkSQL。

    5.1 创建DataFrame

    创建DataFrame的方式:已存在的RDD数据集、hive的表、其他数据源。

    示例·使用已存在的RDD数据集创建DataFrame

    >>> 

    5.2 DataFrame的常见操作

    • printSchema:打印数据集的结构
    • show:打印数据集的数据
    • collect:返回所有的记录
    • select:选择某几列(返回值是DataFrame)
    • XX.age:属性选择的方式选择一列(返回值是Column)
    • XX['XX']:索引选择的方式选择一列
    • filter:按给定的条件筛选部分记录

    DataFrame的常见操作示例

    >>> 

    6 spark SQL

    在DataFrame上可以查询SQL。

    6.1 连接spark SQL

    类似其他的 Spark 程序库一样,在 Python 中不需要对构建方式修改。

    6.2 在应用程序中使用spark SQL

    6.2.1 初始化spark SQL

    以使用hive数据库为例:

    # 导入Spark SQL

    from pyspark.sql import HiveContext, Row

    # 当不能引入hive依赖时

    from pyspark.sql import SQLContext, Row

    示例

    >>> 

    6.2.2 spark SQL查询

    要在一张数据表上进行查询,需要调用 HiveContext 或 SQLContext 中的 sql函数。

    示例

    >>> 

    6.2.3 缓存查询结果

    Spark SQL 的缓存机制与 Spark 中的稍有不同。由于我们知道每个列的类型信息,所以

    Spark 可以更加高效地存储数据。为了确保使用更节约内存的表示方式进行缓存而不是储

    存整个对象,应当使用专门的 hivectx.cacheTable("tableName") 方法。

    7 spark sql 的增删改查

    7.1 一个完整的例子:spark sql的增删改查

    本次使用“本地hive元数据仓库”,没有配置hive-site.xml,导入SQLContext对象。

    产生的表在Linux系统的默认路径是:/home/grid/spark-warehouse/

    示例

    在Linux Shell中启动pyspark:

    [grid@master ~

    在pyspark中进行spark SQL的增删改查:

    >>> 

    在linux shell中查看spark sql创建的数据库和表:

    [grid@master spark-warehouse

    8 总结

    这是spark入门知识,关于RDD和DataFrame还有很多属性和方法,DataFrame还有Column等相关对象。

    查看RDD的相关属性和方法

    >>> 

    查看DataFrame的相关属性和方法

    >>> 
    展开全文
  • pandas中dataframe如何取特定行/列

    千次阅读 多人点赞 2021-05-01 21:00:07
    按列、按索引/行、按特定行列 import numpy as np from pandas import DataFrame import pandas as pd df=DataFrame(np.arange(12).reshape((3,4)),index=['one','two','thr'],columns=list('abcd')) df['a...

    按列取、按索引/行取、按特定行列取

    import numpy as np
    from pandas import DataFrame
    import pandas as pd
    
    df=DataFrame(np.arange(12).reshape((3,4)),index=['one','two','thr'],columns=list('abcd'))
     
    df['a']#取a列
    df[['a','b']]#取a、b列
     
    #ix可以用数字索引,也可以用index和column索引
    df.ix[0]#取第0行
    df.ix[0:1]#取第0行
    df.ix['one':'two']#取one、two行
    df.ix[0:2,0]#取第0、1行,第0列
    df.ix[0:1,'a']#取第0行,a列
    df.ix[0:2,'a':'c']#取第0、1行,abc列
    df.ix['one':'two','a':'c']#取one、two行,abc列
    df.ix[0:2,0:1]#取第0、1行,第0列
    df.ix[0:2,0:2]#取第0、1行,第0、1列
     
    #loc只能通过index和columns来取,不能用数字
    df.loc['one','a']#one行,a列
    df.loc['one':'two','a']#one到two行,a列
    df.loc['one':'two','a':'c']#one到two行,a到c列
    df.loc['one':'two',['a','c']]#one到two行,ac列
     
    #iloc只能用数字索引,不能用索引名
    df.iloc[0:2]#前2行
    df.iloc[0]#第0行
    df.iloc[0:2,0:2]#0、1行,0、1列
    df.iloc[[0,2],[1,2,3]]#第0、2行,1、2、3列
     
    #iat取某个单值,只能数字索引
    df.iat[1,1]#第1行,1列
    #at取某个单值,只能index和columns索引
    df.at['one','a']#one行,a列
    

    按条件取行

    选取等于某些值的行记录 用 ==
    df.loc[df[‘column_name’] == some_value]
     
    选取某列是否是某一类型的数值 用 isin
    df.loc[df[‘column_name’].isin(some_values)]
     
    多种条件的选取 用 &
    df.loc[(df[‘column’] == some_value) & df[‘other_column’].isin(some_values)]
     
    选取不等于某些值的行记录 用 !=
    df.loc[df[‘column_name’] != some_value]
     
    isin返回一系列的数值,如果要选择不符合这个条件的数值使用~
    df.loc[~df[‘column_name’].isin(some_values)]
    

    删除特定行

    # 要删除列“score”<50的所有行:
    df = df.drop(df[df.score < 50].index)
     
    df.drop(df[df.score < 50].index, inplace=True)
     
    # 多条件情况
    # 可以使用操作符: | 只需其中一个成立, & 同时成立, ~ 表示取反,它们要用括号括起来。
    # 例如删除列“score<50 和>20的所有行
    df = df.drop(df[(df.score < 50) & (df.score > 20)].index)
    
    展开全文
  • 【python】pandas.DataFrame选取特定

    千次阅读 2020-10-10 10:36:59
    df = pd.DataFrame([['GD', 'GX', 'FJ'], ['SD', 'SX', 'BJ'], ['HN', 'HB', 'AH'], ['HEN', 'HEN', 'HLJ'], ['SH', 'TJ', 'CQ']], columns=['p1', 'p2', 'p3']) >>> df p1 p2 p3 0 GD GX FJ 1 SD SX BJ ...
  • 也可以指定一个填充值 print(df1.reindex(columns=df2.columns,fill_value=0)) #用这几个特定字的,叫算数方法:add/sub/div/mul,即 加减除乘 #3.4 Dataframe和Series之间的运算 计算一个二维数组与其某行之间的差 ...
  • data = pd.DataFrame({'fecha':fecha, 'rnd_1': rnd_1, 'rnd_2': rnd_2, 'rnd_3': rnd_3}) print(data) print(data.describe()) 结果: fecha rnd_1 rnd_2 rnd_3 0 2012-04-10 13 19 10 1 2012-04-11 14 7 4 2...
  • pandas.DataFrame排除特定行 如果我们想要像Excel的筛选那样,只要其中的一行或某几行,可以使用isin()方法,将需要的行的值以列表方式传入,还可以传入字典,指定列进行筛选。 但是如果我们只想要所有内容中不包含...
  • pandas.DataFrame选取/排除特定行的方法

    千次阅读 2021-03-07 01:16:31
    pandas.DataFrame选取特定行使用Python进行数据分析时,经常要使用到的一个数据结构就是pandas的DataFrame,如果我们想要像Excel的筛选那样,只要其中的一行或某几行,可以使用isin()方法,将需要的行的值以列表方式...
  • 啥也不说了,直接上图 切片操作的时候注意多加一组括号即可
  • dataframe选取特定行和列

    千次阅读 2020-06-29 09:46:06
    pandas选取特定行和列 选取行 df= pd.read_csv('data.csv') df.loc[3:6] # 选取多行 选取列 data = df['column_name'] # 按照指定列名选取 data = df[['column_name1', 'column_name2']] # 多列 data = df....
  • python解决每隔几行取数据的问题 import pandas as pd data = pd.read_csv('./raw.csv') df = pd.DataFrame(data) a=[] for i in range(0,len(df),6): ##每隔6行取数据 a.append(i) file = df.iloc[a] raw1 = pd....
  • 原始数据: import pandas as pd import numpy as np data = {'a': [4, 6, 5, 7, 8], 'b': ['w', 't', 'y', ...df = pd.DataFrame(data, index=['one', 'two', 'three', 'four', 'five']) print(df) # a b c d # one 4
  • python读取DataFrame的某行或某列

    千次阅读 2022-02-22 10:16:08
    from pandas import Sereis, DataFrame ser = Series(np.arange(3.)) data = DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('wxyz')) data['w'] #选择表格中的'w'列,使用类字典属性,...
  • # 创建dataframe df = pd.DataFrame([['AAA','ccc'], ['BBB','aaa'], ['CCC','bbb'],[123,321]]) print(df) # 删除含某特定字符串的行 df1 = df.drop(df[df[1].str.contains('c',na=False)].index) print(df1) # ...
  • # -*- coding: utf-8 -*-import numpy as npimport pandas as pdfrom pandas import *from numpy import *data = DataFrame(np.arange(16).reshape(4,4),index = list("ABCD"),columns=list('wxyz'))print dataprint...
  • DataFrame根据值筛选特定

    千次阅读 2020-03-10 09:35:18
    DataFrame中,使用df.isin()函数可以在某一列中筛选出具有某一个或某几个特定值的行 df = DataFrame() 筛选包含1的行 df_data_1 = df[df['col_name'].isin([1])] 筛选包含1,2,3的行 df_data_1 = df[df['col_...
  • 【Python常见问题】如何取DataFrame中其中几列并组合存储为新的DF,基于Pandas库,处理dataframe数据,参考代码如下
  • With the nice indexing methods in Pandas I have no problems extracting data in various ... On the other hand I am still confused about how to change data in an existing DataFrame.In the following co...
  • Pandas则更为灵活,不但可根据列名称选取,还可以根据列所在的position(数字,在第几行第几列,注意pandas行列的position是从0开始)选取。相关函数如下:1)loc,基于列label,可选取特定行(根据行index);2)iloc,...
  • Pandas:对给定列的DataFrame行求和

    千次阅读 2020-12-15 22:05:28
    你可以只sum设置param axis=1来对行进行求和,这将忽略无数字列:In [91]:df = pd.DataFrame({'a': [1,2,3], 'b': [2,3,4], 'c':['dd','ee','ff'], 'd':[5,9,1]})df['e'] = df.sum(axis=1)dfOut[91]:a b c d e0 1 2 ...
  • 在开始使用Python进行数据导入前需要先导入numpy和pandas库 import numpy as np import pandas as pd 导入外部数据 df=pd.DataFrame(pd.read_csv('name.csv',header=1)) df=pd.DataFrame(pd.read_Excel('name.xlsx')...
  • 报错信息:只是将value赋值给了原数据集df的一个副本,并没有改变df的值 SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
  • 1.选取等于某个特定值的行记录,用 == df.loc[df['column_name'] == some_value] 2. 选取等于某些的数值的行记录,用 isin df.loc[df['column_name'].isin(some_values)] 3. 选取不等于某个特定值的行记录,...
  • 前言做数据分析的时候...比如一列中我们希望找到所有大于100的所有行,又比如 我们希望得到一列中包含某个特定字母的所有行,那么我们应该怎么办呢,这里就说一下。在这之前我们先介绍一个pandas里面一个函数 loc(...
  • Pandas中根据列的值选取多行数据 # 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value] # 选取某列是否是某一类型的数值 用 isin df.loc[df['column_name'].isin(some_values)] ...
  • python dataframe 输出结果整行显示的方法在使用dataframe时遇到datafram在列太多的情况下总是自动换行显示的情况,导致数据阅读困难,效果如下:# -*- coding: utf-8 -*-import numpy as npimport pandas as pddf =...
  • 【数据处理】DataFrame指定行相加计算 # df:原统计表;cols:指定行;col:行标识(列名),newcol(新行标识) def sumMulRow(df,cols,col,newcol): dfcols=df.columns.values.tolist() dftmp=df3[df3[col].isin...
  • 如果我们想要像Excel的筛选那样,只要其中的一行或某几行,可以使用isin()方法,将需要的行的值以列表方式传入,还可以传入字典,指定列进行筛选。 但是如果我们只想要所有内容中不包含特定行的内容,却并没有一个is...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,580
精华内容 632
关键字:

dataframe取特定几行