小编a-a*_*a-a的帖子

numpy函数如何在内部对pandas对象进行操作?

Numpy函数,例如np.mean(),np.var()等,接受类似数组的参数,如np.array或list等.

但是传递大熊猫数据框也有效.这意味着pandas数据帧确实可以伪装成一个numpy数组,我觉得有点奇怪(尽管知道df的底层值确实是numpy数组).

对于一个像数组一样的对象,我认为它应该可以使用整数索引来切割numpy数组的方式.因此,例如df [1:3,2:3]应该可以工作,但这会导致错误.

因此,当数据帧进入函数内部时,可能会将数据帧转换为numpy数组.但如果是这种情况那么为什么np.mean(numpy_array)会导致与np.mean(df)不同的结果呢?

a = np.random.rand(4,2)
a
Out[13]: 
array([[ 0.86688862,  0.09682919],
   [ 0.49629578,  0.78263523],
   [ 0.83552411,  0.71907931],
   [ 0.95039642,  0.71795655]])

np.mean(a)
Out[14]: 0.68320065182041034
Run Code Online (Sandbox Code Playgroud)

给出了与下面给出的结果不同的结果......

df = pd.DataFrame(data=a, index=range(np.shape(a)[0]), 
columns=range(np.shape(a)[1]))

df
Out[18]: 
      0         1
0  0.866889  0.096829
1  0.496296  0.782635
2  0.835524  0.719079
3  0.950396  0.717957

np.mean(df)
Out[21]: 
0    0.787276
1    0.579125
dtype: float64
Run Code Online (Sandbox Code Playgroud)

前一个输出是单个数字,而后一个是列方式.numpy函数如何知道数据帧的构成?

python numpy pandas

7
推荐指数
1
解决办法
1067
查看次数

用常量初始化数据帧

用常量值初始化数据帧不起作用,

pd.DataFrame(0, index=[1,2,3])      # doesnt work!
    # OR
pd.DataFrame(0)                     # doesnt work!
Run Code Online (Sandbox Code Playgroud)

而我观察到

(1)使用常数初始化Series

pd.Series(0, index=[1,2,3])         # Works fine!
Run Code Online (Sandbox Code Playgroud)

(2)使用None初始化DataFrame是可行的

pd.DataFrame(None, index=[1,2,3])   # Works fine!
Run Code Online (Sandbox Code Playgroud)

(3)在不提供索引和列的情况下初始化DataFrame

pd.DataFrame([1, 2, 3])             # Works fine!
pd.DataFrame([0])                   # Works fine!
Run Code Online (Sandbox Code Playgroud)

有人知道为什么吗?

我希望从设计考虑中了解更多信息,而不是像“如果您检查熊猫代码,您会发现它未能通过其中一项数据尺寸应大于1.的检查”之类的答案,就会知道更多信息。 。

我认为它应该只是直观地工作(考虑到熊猫在不提供默认col和index的情况下很聪明,还可以从给定的数据中猜测尺寸)。

可能有某种原因导致此行为,但无法确定。

python initialization dataframe pandas

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

标签 统计

pandas ×2

python ×2

dataframe ×1

initialization ×1

numpy ×1