草庐IT

pyspark-dataframes

全部标签

python - pyspark 执行器节点上的 python 进程是否在 ram 中共享广播变量?

我的Spark集群中有一个节点有24个内核和124Gb内存。当我将spark.executor.memory字段设置为4g,然后广播一个需要3.5gb存储在ram中的变量时,内核会共同持有该变量的24个副本吗?还是一份?我正在使用pyspark-v1.6.2 最佳答案 我相信PySpark不使用任何形式的共享内存来在工作人员之间共享广播变量。在类Unix系统上广播变量areloaded在worker的主要功能中,仅调用afterforking来自守护进程,因此无法从父进程空间访问。如果您想在不使用外部服务的情况下减少大变量的占用空间

python - 以字符串元组作为索引的 Pandas DataFrame

我在这里感觉到一些奇怪的pandas行为。我有一个看起来像的数据框df=pd.DataFrame(columns=['Col1','Col2','Col3'],index=[('1','a'),('2','a'),('1','b'),('2','b')])In[14]:dfOut[14]:Col1Col2Col3(1,a)NaNNaNNaN(2,a)NaNNaNNaN(1,b)NaNNaNNaN(2,b)NaNNaNNaN我可以设置任意元素的值In[15]:df['Col2'].loc[('1','b')]=6In[16]:dfOut[16]:Col1Col2Col3(1,a)NaNN

Python:在多张纸上将 pandas DataFrame 写入 Excel 的最快方法

我需要将24个pandas数据框(140列x400行)导出到Excel,每个都导出到不同的工作表中。我正在使用pandas的内置ExcelWriter。运行24个场景,需要:51秒写入.xls文件(使用xlwt)86秒写入.xlsx文件(使用XlsxWriter)141秒写入.xlsm文件(使用openpyxl)仅运行程序需要21秒(无Excel输出)写入.xls的问题是电子表格不包含格式样式,因此如果我在Excel中打开它,选择一列,然后单击“逗号”按钮来格式化数字,它告诉我:“找不到样式逗号”。我在写入.xlsx时没有遇到这个问题,但这样更慢。关于如何使导出更快的任何建议?我不可能

java - 实现一个 java UDF 并从 pyspark 调用它

我需要创建一个在pysparkpython中使用的UDF,它使用java对象进行内部计算。如果它是一个简单的python,我会做类似的事情:deff(x):return7fudf=pyspark.sql.functions.udf(f,pyspark.sql.types.IntegerType())并使用以下方式调用它:df=sqlContext.range(0,5)df2=df.withColumn("a",fudf(df.id)).show()然而,我需要的功能的实现是在java中而不是在python中。我需要以某种方式包装它,以便我可以从python中以类似的方式调用它。我的第一

python - Pandas DataFrame 搜索是线性时间还是常数时间?

我有一个超过15000行的数据框对象df,例如:anime_idnamegenrerating1234KiminonawaRomance,Comedy9.315678Stiens;GateSci-fi8.92我正在尝试查找具有特定anime_id的行。a_id="5678"temp=(df.query("anime_id=="+a_id).genre)我只是想知道这个搜索是在常数时间(如字典)还是线性时间(如列表)中完成的。 最佳答案 这是一个非常有趣的问题!我觉得取决于以下几个方面:按索引访问单行(索引已排序且唯一)应该有运行时O

python - 将 pandas groupby 结果合并回 DataFrame

我有一个看起来像这样的DataFrame...idnvalue0ID1251ID1302ID2303ID250我想在此框架中添加另一列,即按“idn”分组的最大“值”我想要这样的结果。idnvaluemax_val0ID125301ID130302ID230503ID25050我可以像这样使用组来提取“值”的最大值...df[['idn','value']].groupby('idn')['value'].max()但是,我无法将该结果合并回原始DataFrame。获得预期结果的最佳方法是什么?谢谢 最佳答案 对groupby对象使

python - 对 pandas DataFrame 进行就地行操作

假设我有这个:>>>x=pandas.DataFrame([[1.0,2.0,3.0],[3,4,5]],columns=["A","B","C"])>>>printxABC01231345现在我想按行规范化x---也就是说,将每一行除以其总和。如thisquestion中所述,这可以通过x=x.div(x.sum(axis=1),axis=0)来实现。但是,这会创建一个新DataFrame。如果我的DataFrame很大,即使我立即将其分配给原始名称,创建这个新DataFrame也会消耗大量内存。是否有一种有效的方法来执行此操作?我想要类似x.idiv()的东西,它提供div的axi

python - 将 geopandas geodataframe 转换为 pandas dataframe

将geopandasgeodataframe转换为pandasdataframe的最有效方法是什么?以下是我使用的方法,是否有另一种方法更有效或通常不会产生错误?importgeopandasasgpdimportpandasaspd#assumingIhaveashapefilenamedshp1.shpgdf1=gpd.read_file('shp1.shp')#thenfortheconversion,Idropthelastcolumn(geometry)andspecifythecolumnnamesforthenewdfdf1=pd.DataFrame(gdf1.iloc[

python - 带有分类标记的行/列的散点图 pandas DataFrame

我想使用matplotlib生成带有分类行和列标签的pandasDataFrame散点图。示例DataFrame如下所示:importpandasaspddf=pd.DataFrame({"a":[1,2],"b":[3,4]},index=["c","d"])#ab#c12#d34标记大小是各个DataFrame值的函数。到目前为止,我想出了一个笨拙的解决方案,基本上是枚举行和列,绘制数据,然后重建标签:flat=df.reset_index(drop=True).T.reset_index(drop=True).T.stack().reset_index()#level_0leve

python - 将 pyspark 数据框的列转换为小写

我在pyspark中有一个数据框,其中包含大写的列,例如ID、COMPANY等等我想把这些列名做成idcompany等等。根据需要将所有列基本转换为小写或大写。我想做的是让列的数据类型保持不变。我们怎样才能做到这一点? 最佳答案 使用DataFrame中的columns字段df=//loadforcolindf.columns:df=df.withColumnRenamed(col,col.lower())或者,正如@zero323建议的那样:df.toDF(*[c.lower()forcindf.columns])