我有一个大熊猫数据成名df.它有很多缺失.丢弃行/或逐行不是一种选择.输入中位数,平均值或最常见的值也不是一种选择(因此,插入pandas和/或scikit不幸的是没有做到这一点).
我遇到了一个看起来很整洁的包fancyimpute(你可以在这里找到它).但我有一些问题.
这是我做的:
#the neccesary imports
import pandas as pd
import numpy as np
from fancyimpute import KNN
# df is my data frame with the missings. I keep only floats
df_numeric = = df.select_dtypes(include=[np.float])
# I now run fancyimpute KNN,
# it returns a np.array which I store as a pandas dataframe
df_filled = pd.DataFrame(KNN(3).complete(df_numeric))
Run Code Online (Sandbox Code Playgroud)
但是,它df_filled是一个单一的向量,而不是填充的数据帧.如何通过插补来保持数据框?
我意识到,fancyimpute需要一个numpay array.我因此使用转换为df_numeric数组as_matrix(). …
在Hadoop中,当我使用inputformat reader时,作业级别的日志会报告读取的记录数,还会显示字节数等.
在Spark中,当我使用相同的inputformat阅读器时,我得到的不是那些指标.
所以我想我会使用inputformat reader来填充rdd,然后只发布rdd中的记录数(rdd的大小).
我知道rdd.count()返回rdd的大小.
但是,使用成本count()对我来说并不清楚?例如:
count()遗嘱后,rdd仍然保留在内存中,还是我必须显式缓存它?我无法完全理解Python3x中Type和Value错误之间的区别.
当我尝试使用float('string')而不是TypeError时,为什么会得到ValueError?不应该给出一个TypeError因为我传递一个'str'类型的变量要转换成float?
In [169]: float('string')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-169-f894e176bff2> in <module>()
----> 1 float('string')
ValueError: could not convert string to float: 'string'
Run Code Online (Sandbox Code Playgroud) 对于 python 中的 Spark,sc.parallelize()和collect()操作是否保持顺序?例如,如果我有一个元素列表x,将返回与?sc.parallelize(x).collect()完全相同的顺序的元素列表。x
我正在尝试使用pandas.read_excel()从电子表格导入多个工作表.如果我没有使用parse_cols关键字指定列,我可以从工作表中获取所有数据,但我似乎无法弄清楚如何为每个工作表指定特定的列.
import pandas as pd
workSheets = ['sheet1', 'sheet2', 'sheet3','sheet4']
cols = ['A,E','A,E','A,C','A,E']
df = pd.read_excel(excelFile, sheetname=workSheets, parse_cols='A:E') #This works fine
df = pd.read_excel(excelFile, sheetname=workSheets, parse_cols=cols) #This returns empty dataFrames
Run Code Online (Sandbox Code Playgroud)
有没有人知道是否有一种方法,使用read_excel(),从excel导入多个工作表,还根据哪个工作表指定特定的列?
谢谢.
我有以下代码:
val df_in = sqlcontext.read.json(jsonFile) // the file resides in hdfs
//some operations in here to create df as df_in with two more columns "terms1" and "terms2"
val intersectUDF = udf( (seq1:Seq[String], seq2:Seq[String] ) => { seq1 intersect seq2 } ) //intersects two sequences
val symmDiffUDF = udf( (seq1:Seq[String], seq2:Seq[String] ) => { (seq1 diff seq2) ++ (seq2 diff seq1) } ) //compute the difference of two sequences
val df1 = (df.withColumn("termsInt", intersectUDF(df("terms1"), df1("terms2") ) )
.withColumn("termsDiff", symmDiffUDF(df("terms1"), df1("terms2") ) …Run Code Online (Sandbox Code Playgroud) 我已使用命令在 Spark 上保存了 parquet 文件DataFrame.saveAsParquet()。
如何通过 python 代码删除/删除该文件?
正如问题中所指定的,我正在尝试为 RDD 的每一行生成一个哈希值。出于我的目的,我不能使用zipWithUniqueId()方法,对于 RDD 的每一行,我需要所有列的一个哈希值。
for row in DataFrame.collect():
return hashlib.sha1(str(row))
Run Code Online (Sandbox Code Playgroud)
我知道这是最糟糕的方式,迭代到 rdd,但我是 pyspark 的初学者。然而问题是:我为每一行获得相同的哈希值。我尝试使用强抗碰撞散列函数,但它太慢了。有没有办法解决这个问题?提前致谢 :)
我试图了解如何toLocalIterator工作,我读了一些帖子和博客,但是我不确定一件事。
它是否一次将所有分区复制到驱动程序节点并创建迭代器?或者它一次复制一个分区的数据,然后创建一个迭代器?
我正在使用pysolr-2.0.15 api进行SOLR搜索
mysite:8983/solr/select/?q=disease&fq=url:"pediatric"&version=2.2&start=0&rows=10&indent=on
Run Code Online (Sandbox Code Playgroud)
这个SOLR查询给了我成功的结果
我想用pysolr搜索功能来实现它
我正在尝试这个
results = conn.search('disease "url:Pediatric"')
Run Code Online (Sandbox Code Playgroud)
但结果不正确.
另一个问题是搜索方法只返回10条记录我怎样才能获得所有搜索结果.
谁能帮我吗?
apache-spark ×5
python ×4
pyspark ×3
hadoop ×2
pandas ×2
fancyimpute ×1
hadoop2 ×1
hash ×1
imputation ×1
java ×1
parquet ×1
pysolr ×1
python-3.x ×1
rdd ×1
row ×1
solr ×1
typeerror ×1
valueerror ×1