小编piR*_*red的帖子

在Pandas数据帧中对所有值求和的最佳方法是什么?

我想出了这两种方法.还有更好的吗?

>>> import pandas as pd
>>> df = pd.DataFrame({'A': [5, 6, 7], 'B': [7, 8, 9]})
>>> print df.sum().sum()
42
>>> print df.values.sum()
42
Run Code Online (Sandbox Code Playgroud)

只是想确保我没有遗漏更明显的东西.

python numpy sum dataframe pandas

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

什么是时间测试熊猫和numpy相关解决方案的简单框架

动机

我在这里和那里回答几个问题.我经常测试我和其他人的解决方案有多快.

是否有一个简单的框架来全面了解各种解决方案的速度有多快?

考虑数据帧 df

df = pd.DataFrame({
        'Group': list('QLCKPXNLNTIXAWYMWACA'),
        'Value': [29, 52, 71, 51, 45, 76, 68, 60, 92, 95,
                  99, 27, 77, 54, 39, 23, 84, 37, 99, 87]
    })
Run Code Online (Sandbox Code Playgroud)

我想总结Value按不同值分组的列Group.我有三种方法可以做到这一点.

import pandas as pd
import numpy as np
from numba import njit


def sum_pd(df):
    return df.groupby('Group').Value.sum()

def sum_fc(df):
    f, u = pd.factorize(df.Group.values)
    v = df.Value.values
    return pd.Series(np.bincount(f, weights=v).astype(int), pd.Index(u, name='Group'), name='Value').sort_index()

@njit
def wbcnt(b, w, k):
    bins = np.arange(k)
    bins = …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

21
推荐指数
3
解决办法
561
查看次数

Pandas加入/合并/连接两个数据帧

我遇到了大熊猫加入的问题,我正在试图找出问题所在.说我有一个dataframex:

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 1941 entries, 2004-10-19 00:00:00 to 2012-07-23 00:00:00
Data columns:
close    1941  non-null values
high     1941  non-null values
low      1941  non-null values
open     1941  non-null values
dtypes: float64(4)
Run Code Online (Sandbox Code Playgroud)

我应该能够使用简单的连接命令将其与y连接在一起,其中y = x除了colnames有+2.

 <class 'pandas.core.frame.DataFrame'>
 DatetimeIndex: 1941 entries, 2004-10-19 00:00:00 to 2012-07-23 00:00:00
 Data columns:
 close2    1941  non-null values
 high2     1941  non-null values
 low2      1941  non-null values
 open2     1941  non-null values
 dtypes: float64(4)

 y.join(x) or pandas.DataFrame.join(y,x):
 <class 'pandas.core.frame.DataFrame'>
 DatetimeIndex: 34879 entries, 2004-12-16 00:00:00 to 2012-07-12 00:00:00
 Data …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

如何将pandas系列转换为索引和值的元组

我正在寻找一种有效的方法,将一个系列转换为其索引的元组及其值.

s = pd.Series([1, 2, 3], ['a', 'b', 'c'])
Run Code Online (Sandbox Code Playgroud)

我想要一个数组,列表,系列,一些可迭代:

[(1, 'a'), (2, 'b'), (3, 'c')]
Run Code Online (Sandbox Code Playgroud)

python iterable series pandas

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

在pandas中按范围加入/合并的最佳方式

我经常使用范围条件将pandas用于合并(join).

例如,如果有2个数据帧:

A(A_id,A_value)

B(B_id,B_low,B_high,B_name)

它们很大并且大小相同(比如每个2M记录).

我想在A和B之间建立一个内连接,所以A_value将在B_low和B_high之间.

使用SQL语法:

SELECT *
FROM A,B
WHERE A_value between B_low and B_high
Run Code Online (Sandbox Code Playgroud)

这将非常简单,简短而有效.

同时在pandas中唯一的方法(不使用我发现的循环)是在两个表中创建一个虚拟列,连接它(相当于交叉连接),然后过滤掉不需要的行.这听起来沉重而复杂:

A['dummy'] = 1
B['dummy'] = 1
Temp = pd.merge(A,B,on='dummy')
Result = Temp[Temp.A_value.between(Temp.B_low,Temp.B_high)]
Run Code Online (Sandbox Code Playgroud)

我的另一个解决方案是通过使用B[(x>=B.B_low) & (x<=B.B_high)]掩码在B上的每个A值上应用搜索函数,但它听起来效率低,并且可能需要索引优化.

是否有更优雅和/或更有效的方式来执行此操作?

python join numpy pandas

20
推荐指数
2
解决办法
6707
查看次数

开源的Enthought Python替代品

我使用Enthought的python发行版作为研究生进行数据分析,并且非常喜欢它.但我最近接受了一项工作,这剥夺了我使用它的能力.

我更喜欢Python用于初始范围和清理数据,而R用于统计数据.想要这个的一部分动力就是尝试大熊猫.而其他部分是我没有适当的许可证(或支付手段),这显然是一个问题.

那么,有没有其他的一些好放在一起容易安装Python发行,我可以得到numpy,scipy,sci-kits,和所有其他的善良?

python numpy scipy enthought pandas

19
推荐指数
6
解决办法
6747
查看次数

熊猫:简单的'加入'不起作用?

我想我不是白痴,但也许我错了.任何人都可以向我解释为什么这不起作用?我可以使用'merge'来达到预期的效果.但我最终需要加入多个,pandas DataFrames所以我需要让这个方法起作用.

In [2]: left = pandas.DataFrame({'ST_NAME': ['Oregon', 'Nebraska'], 'value': [4.685, 2.491]})

In [3]: right = pandas.DataFrame({'ST_NAME': ['Oregon', 'Nebraska'], 'value2': [6.218, 0.001]})

In [4]: left.join(right, on='ST_NAME', lsuffix='_left', rsuffix='_right')
Out[4]: 
  ST_NAME_left  value ST_NAME_right  value2
0       Oregon  4.685           NaN     NaN
1     Nebraska  2.491           NaN     NaN
Run Code Online (Sandbox Code Playgroud)

pandas

19
推荐指数
1
解决办法
9217
查看次数

Pandas一次更新多个列

我正在尝试一次更新几个字段 - 我有两个数据源,我正在尝试协调它们.我知道我可以做一些丑陋的合并,然后删除列,但希望下面的代码工作:

df = pd.DataFrame([['A','B','C',np.nan,np.nan,np.nan],
                  ['D','E','F',np.nan,np.nan,np.nan],[np.nan,np.nan,np.nan,'a','b','d'],
                  [np.nan,np.nan,np.nan,'d','e','f']], columns = ['Col1','Col2','Col3','col1_v2','col2_v2','col3_v2'])

print df

 Col1 Col2 Col3 col1_v2 col2_v2 col3_v2
0    A    B    C     NaN     NaN     NaN
1    D    E    F     NaN     NaN     NaN
2  NaN  NaN  NaN       a       b       d
3  NaN  NaN  NaN       d       e       f

#update 
df.loc[df['Col1'].isnull(),['Col1','Col2', 'Col3']] = df[['col1_v2','col2_v2','col3_v2']]

print df

 Col1 Col2 Col3 col1_v2 col2_v2 col3_v2
0    A    B    C     NaN     NaN     NaN
1    D    E    F     NaN     NaN     NaN
2  NaN  NaN  NaN       a       b …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

如何计算歪斜和咳嗽

您可以使用这些方法计算偏斜和峰度

但是,没有方便的方法来计算变量之间的歪斜或彗星密度.甚至更好,歪斜或cokurtosis矩阵.


考虑一下 pd.DataFrame df

import pandas as pd
import numpy as np

np.random.seed([3,1415])
df = pd.DataFrame(np.random.rand(10, 2), columns=list('ab'))

df

          a         b
0  0.444939  0.407554
1  0.460148  0.465239
2  0.462691  0.016545
3  0.850445  0.817744
4  0.777962  0.757983
5  0.934829  0.831104
6  0.879891  0.926879
7  0.721535  0.117642
8  0.145906  0.199844
9  0.437564  0.100702
Run Code Online (Sandbox Code Playgroud)

如何计算coskew和cokurtosis ab

python numpy pandas

18
推荐指数
1
解决办法
1603
查看次数

从大的元组/行列表中有效地构造Pandas DataFrame

我继承了以Stata .dta格式保存的数据文件.我可以用scikits.statsmodels genfromdta()函数加载它.这将我的数据放入一维NumPy数组中,其中每个条目都是一行数据,存储在24元组中.

In [2]: st_time = time.time(); initialload = sm.iolib.genfromdta("/home/myfile.dta"); ed_time = time.time(); print (ed_time - st_time)
666.523324013

In [3]: type(initialload)
Out[3]: numpy.ndarray

In [4]: initialload.shape
Out[4]: (4809584,)

In [5]: initialload[0]
Out[5]: (19901130.0, 289.0, 1990.0, 12.0, 19901231.0, 18.0, 40301000.0, 'GB', 18242.0, -2.368063, 1.0, 1.7783716290878204, 4379.355, 66.17669677734375, -999.0, -999.0, -0.60000002, -999.0, -999.0, -999.0, -999.0, -999.0, 0.2, 371.0)
Run Code Online (Sandbox Code Playgroud)

我很好奇是否有一种有效的方法将其安排到Pandas DataFrame中.根据我的阅读,逐行构建DataFrame看起来效率很低......但我的选择是什么?

我写了一个非常慢的第一遍,它只是将每个元组作为单行DataFrame读取并附加它.只是想知道是否还有其他更好的东西.

python tuples pandas dta

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

标签 统计

pandas ×10

python ×9

numpy ×5

dataframe ×2

dta ×1

enthought ×1

iterable ×1

join ×1

scipy ×1

series ×1

sum ×1

tuples ×1