我在数据帧上运行'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) 我正在尝试获取输入数据:
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
,但我无法做到我想做的事情.
我有一个很大np.ndarray (3600000,3)
的HUE
,一个VALUE
和一个相关的CLASS
数字.对于每对HUE
和VALUE
我想找到的,使用这个数组相应的Class
数字.我是Python的初学者,并且很难做到这一点.你知道办法吗?
先感谢您!
我有一个包含的数据框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
.
可能的解决方案是使用常量列,但我找不到它.
我在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
.
我使用pandas的.to_excel方法将DataFrame写为Excel工作簿.当索引单元合并时,即使对于多索引DataFrame,这也很好用.当使用纯XlsxWriter时,我可以将格式应用于单元格,这也很好用.
但是我找不到用pandas方法做同样的方法.只是传递一个带有列名和样式的字典将是最直观的.
有没有办法这样做?
我想在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) 我有很多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) 这可能超级简单,但我找不到答案.我从形状文件中使用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)
什么都不改变.
当我试图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) python ×7
numpy ×3
pandas ×3
apache-spark ×2
scala ×2
android ×1
android-ndk ×1
boost ×1
c ×1
c++ ×1
configparser ×1
io ×1
null ×1
porting ×1
rename ×1
scipy ×1
xlsx ×1
xlsxwriter ×1