小编eme*_*eth的帖子

熊猫'描述'不会返回所有列的摘要

我在数据帧上运行'describe()'并获取只有int列的摘要(pandas 14.0).

文档说明对于最常见值的对象列频率,将返回其他统计信息.可能有什么不对?(顺便没有返回错误信息)

编辑:

我认为这是函数设置为在数据帧中的混合列类型上的行为.虽然文档没有提到它.

示例代码:

df_test = pd.DataFrame({'$a':[1,2], '$b': [10,20]})
df_test.dtypes
df_test.describe()
df_test['$a'] = df_test['$a'].astype(str)
df_test.describe()
df_test['$a'].describe()
df_test['$b'].describe()
Run Code Online (Sandbox Code Playgroud)

与此同时,我的丑陋工作:

def my_df_describe(df):
    objects = []
    numerics = []
    for c in df:
        if (df[c].dtype == object):
            objects.append(c)
        else:
            numerics.append(c)

    return df[numerics].describe(), df[objects].describe()
Run Code Online (Sandbox Code Playgroud)

python pandas

42
推荐指数
4
解决办法
7万
查看次数

Spark:有条件地将列添加到数据框

我正在尝试获取输入数据:

A    B       C
--------------
4    blah    2
2            3
56   foo     3
Run Code Online (Sandbox Code Playgroud)

并根据B是否为空来在末尾添加一列:

A    B       C     D
--------------------
4    blah    2     1
2            3     0
56   foo     3     1
Run Code Online (Sandbox Code Playgroud)

我可以通过将输入数据帧注册为临时表,然后键入SQL查询来轻松完成此操作.

但我真的想知道如何使用Scala方法执行此操作,而不必在Scala中键入SQL查询.

我已经尝试过了.withColumn,但我无法做到我想做的事情.

scala apache-spark apache-spark-sql spark-dataframe

31
推荐指数
1
解决办法
8万
查看次数

根据两列的值选择numpy ndarray中的行

我有一个很大np.ndarray (3600000,3)HUE,一个VALUE和一个相关的CLASS数字.对于每对HUEVALUE我想找到的,使用这个数组相应的Class数字.我是Python的初学者,并且很难做到这一点.你知道办法吗?

先感谢您!

python numpy multidimensional-array

16
推荐指数
2
解决办法
2万
查看次数

如何在Spark SQL(DataFrame)的UDF中使用常量值

我有一个包含的数据框timestamp.要按时间(分钟,小时或天)聚合,我尝试过:

val toSegment = udf((timestamp: String) => {
  val asLong = timestamp.toLong
  asLong - asLong % 3600000 // period = 1 hour
})

val df: DataFrame // the dataframe
df.groupBy(toSegment($"timestamp")).count()
Run Code Online (Sandbox Code Playgroud)

这很好用.

我的问题是如何将UDF概括toSegment

val toSegmentGeneralized = udf((timestamp: String, period: Int) => {
  val asLong = timestamp.toLong
  asLong - asLong % period
})
Run Code Online (Sandbox Code Playgroud)

我尝试了如下但它不起作用

df.groupBy(toSegment($"timestamp", $"3600000")).count()
Run Code Online (Sandbox Code Playgroud)

它似乎找到了名为的列3600000.

可能的解决方案是使用常量列,但我找不到它.

scala apache-spark apache-spark-sql

15
推荐指数
1
解决办法
1万
查看次数

如何使用已在ConfigParser中定义的变量

我在Python中使用ConfigParser

config.ini是

[general]
name: my_name
base_dir: /home/myhome/exp

exe_dir: ${base_dir}/bin
Run Code Online (Sandbox Code Playgroud)

在这里我想exp_dir变得/home/myhome/exp/bin${base_dir}/bin.

它意味着${base_dir}将被替代/home/myhome/exp automatically.

python configparser

13
推荐指数
3
解决办法
1万
查看次数

在使用XlsxWriter导出到pandas中的'xlsx'时应用样式

我使用pandas的.to_excel方法将DataFrame写为Excel工作簿.当索引单元合并时,即使对于多索引DataFrame,这也很好用.当使用纯XlsxWriter时,我可以将格式应用于单元格,这也很好用.

但是我找不到用pandas方法做同样的方法.只是传递一个带有列名和样式的字典将是最直观的.

有没有办法这样做?

python io xlsx pandas xlsxwriter

11
推荐指数
3
解决办法
1万
查看次数

将Trickle移植到android

我想在android上移植Trickle(https://github.com/mariusaeriksen/trickle).

到目前为止我想到的是,我需要使用NDK独立工具链交叉编译此应用程序所依赖的各个库,主要是"libevent".

从这篇文章中获得了一些帮助 - http://warpedtimes.wordpress.com/2010/02/03/building-open-source-libraries-with-android-ndk/

我已经设法用以下'build_android.sh'脚本交叉编译libevent:


export ANDROID_ROOT=/home/narayan/installations/android-ndk-r9d

export PATH=$PATH:$ANDROID_ROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin
export PATH=$PATH:$ANDROID_ROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/include

#Since it complains about crtbegin and crtend

ln -s $ANDROID_ROOT/platforms/android-19/arch-arm/usr/lib/crtbegin_so.o
ln -s $ANDROID_ROOT/platforms/android-19/arch-arm/usr/lib/crtend_so.o


./configure \
--host=arm-linux-androideabi \
CC=$ANDROID_ROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-  androideabi-gcc \
LD=$ANDROID_ROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ld \
AR=$ANDROID_ROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar \
RANLIB=$ANDROID_ROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ranlib \
CPPFLAGS="-I$ANDROID_ROOT/platforms/android-19/arch-arm/usr/include/" \
CFLAGS="-nostdlib" \
LDFLAGS="-Wl,-rpath-link=$ANDROID_ROOT/platforms/android-19/arch-arm/usr/lib/ -L$ANDROID_ROOT/platforms/android-19/arch-arm/usr/lib/" \
LIBS="-lc -lgcc -L$ANDROID_ROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.8"
Run Code Online (Sandbox Code Playgroud)

现在,当我为涓流应用程序执行相同操作时,我在上面的涓流项目目录中运行与上面相同的脚本时出现以下错误 -


checking build system type... x86_64-unknown-linux-gnu
checking host system type... arm-unknown-linux-androideabi
checking target system type... arm-unknown-linux-androideabi
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... …
Run Code Online (Sandbox Code Playgroud)

c android porting shared-libraries android-ndk

9
推荐指数
1
解决办法
831
查看次数

线性拟合包括NumPy/SciPy的所有错误

我有很多yy数据点,y需要适应非线性函数.在某些情况下,这些函数可以是线性的,但更通常是指数衰减,高斯曲线等.SciPy支持这种拟合scipy.optimize.curve_fit,我也可以指定每个点的权重.这给了我加权的非线性拟合,这很好.从结果中,我可以提取参数及其各自的错误.

只有一点需要注意:错误仅用作权重,但不包含在错误中.如果我将所有数据点的误差加倍,我预计结果的不确定性也会增加.所以我构建了一个测试用例(源代码)来测试它.

适合scipy.optimize.curve_fit给我:

Parameters: [ 1.99900756  2.99695535]
Errors:     [ 0.00424833  0.00943236]
Run Code Online (Sandbox Code Playgroud)

相同但有2 * y_err:

Parameters: [ 1.99900756  2.99695535]
Errors:     [ 0.00424833  0.00943236]
Run Code Online (Sandbox Code Playgroud)

相同但有2*y_err:

所以你可以看到值是相同的.这告诉我算法没有考虑到这些,但我认为值应该是不同的.

我在这里也读到了另一种合适的方法,所以我也尝试了scipy.odr:

Beta: [ 2.00538124  2.95000413]
Beta Std Error: [ 0.00652719  0.03870884]
Run Code Online (Sandbox Code Playgroud)

相同但有20 * y_err:

Beta: [ 2.00517894  2.9489472 ]
Beta Std Error: [ 0.00642428  0.03647149]
Run Code Online (Sandbox Code Playgroud)

值略有不同,但我认为这可以解释错误的增加.我认为这只是围绕错误或有点不同的权重.

是否有一些软件包允许我适应数据并获得实际错误?我在书中有公式,但如果我不需要,我不想自己实现.


我现在linfit.py在另一个问题中读过.这很好地处理了我的想法.它支持两种模式,第一种是我需要的.

Fit with linfit:
Parameters: [ 2.02600849  2.91759066]
Errors:     [ 0.00772283  0.04449971]

Same but with …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy

8
推荐指数
1
解决办法
3635
查看次数

在Pandas中重命名"None"值

这可能超级简单,但我找不到答案.我从形状文件中使用GeoPandas导入数据.把它变成熊猫DataFrame.我有一个对象字段,其中包含三个字母代码和None缺失数据的值.如何None在熊猫中将其更改为"vcv"?我试过这个

sala.replace(None,"vcv")
Run Code Online (Sandbox Code Playgroud)

得到了这个错误

   2400                                     "strings or regular expressions, you "
   2401                                     "passed a"
-> 2402                                     " {0!r}".format(type(regex).__name__))
   2403                 return self.replace(regex, value, inplace=inplace, limit=limit,
   2404                                     regex=True)

TypeError: 'regex' must be a string or a compiled regular expression or a list or dict of strings or regular expressions, you passed a 'bool'
Run Code Online (Sandbox Code Playgroud)

试过这个

if sala['N10'] is None:
    sala['N10'] = 'Nul'
Run Code Online (Sandbox Code Playgroud)

什么都不改变.

python null rename pandas

8
推荐指数
1
解决办法
1万
查看次数

使用boost :: numpy :: ndarray时出现分段错误

当我试图boost::numpy::ndarray作为一个论点传递时,我得到了我认为是一个奇怪的seg错误:

#include <iostream>
#include <boost/python.hpp>
#include <boost/numpy.hpp>


void say_hello(boost::numpy::ndarray& my_array)
//void say_hello(int x) This works fine
{
  std::cout<<"Hello"<<std::endl;
}

BOOST_PYTHON_MODULE(hello_ext)
{
    using namespace boost::python;
    def("say_hello", say_hello);

}
Run Code Online (Sandbox Code Playgroud)

我知道这个例子很愚蠢,但我不应该在那里遇到一个seg错误,这是我能够将问题减少到的最小的例子.也许我需要指定ndarray维度的类型或数量,但我找不到任何文档.我在看这个,但似乎没有什么帮助.我的直觉是我错过了一些简单的东西,但我只是看不到它.

当我运行这个:

In [1]: from hello_ext import *

In [2]: import numpy as np

In [3]: say_hello(np.array([3,4,5]))
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

我的Makefile:

PYTHON_VERSION = 2.7
PYTHON_INCLUDE = /usr/include/python$(PYTHON_VERSION)


BOOST_INC = /usr/include
BOOST_LIB = /usr/lib

TARGET = hello_ext

$(TARGET).so: $(TARGET).o
    g++ -std=c++11 -shared -Wl,--export-dynamic $(TARGET).o -L$(BOOST_LIB) -lboost_python -lboost_numpy …
Run Code Online (Sandbox Code Playgroud)

c++ python boost numpy

8
推荐指数
1
解决办法
1266
查看次数