小编Fou*_*ier的帖子

Pip 命令行“ImportError: No Module Named Typing”

运行命令给我以下错误:

C:\Python34\Scripts> pip install pygame

错误堆栈:

Traceback (most recent call last):
  File "C:\Python34\lib\runpy.py", line 171, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Python34\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Python34\Scripts\pip.exe\__main__.py", line 5, in <module>
  File "C:\Python34\lib\site-packages\pip\__init__.py", line 1, in <module>
    from typing import List, Optional
ImportError: No module named 'typing'
Run Code Online (Sandbox Code Playgroud)

python pip

13
推荐指数
5
解决办法
7万
查看次数

使用 Pandas 绘制包含列表的列

我有一个包含多列的数据框 (df),其中两列在每一行中存储一个列表:

Index    list1                             list2
A   [ 0.09173306  0.12331911  0.20057651 ]  [ 0.3128322   0.27153913 ]
D   [ 0.03861522  0.10524985 ]              [ 0.37265687  0.48347806 ]
E   [ 0.02124905  0.01149118 ]              [ 0.04348405  0.17057435  0.37838683  0.37481453 ]
Run Code Online (Sandbox Code Playgroud)

我想使用pandas内置plot函数将这些列表绘制为条形图。

使用

df.list1.apply(lambda x:x[0]).plot(kind='bar', width=0.9, ax=bar_ax)
Run Code Online (Sandbox Code Playgroud)

我可以绘制每个列表的第一个元素。然而,试图

df.list1.plot(kind='bar', width=0.9, ax=bar_ax)
Run Code Online (Sandbox Code Playgroud)

导致以下错误:

Empty 'DataFrame': no numeric data to plot
Run Code Online (Sandbox Code Playgroud)

我想要做的是,(1)将两个列表绘制成一个单独的图,如下所示:

df[['list1','list2']].plot(kind='bar', width=0.9, ax=bar_ax)
Run Code Online (Sandbox Code Playgroud)

并且(2)还将每个列表的第一个元素仅绘制到一个条形图中,我可以这样做:

df.list1.apply(lambda x:x[0]).plot(kind='bar', width=0.9, ax=bar_ax, color='blue')
df.list2.apply(lambda x:x[0]).plot(kind='bar', width=0.9, ax=bar_ax, color='red')
Run Code Online (Sandbox Code Playgroud)

但是,这会导致条形图彼此叠加(未堆叠!) - 我想将它们分组。

python plot list dataframe pandas

5
推荐指数
1
解决办法
5373
查看次数

用熊猫调整子图布局

我才明白,matplotlibtight_layout()不能被应用到所产生的地块大熊猫

这是我正在运行的代码:

            0         1         2         3         4
A    0.039895  0.960105       NaN       NaN       NaN
D    0.030418  0.969582       NaN       NaN       NaN
E    0.037345  0.962655       NaN       NaN       NaN
F    0.061522  0.938478       NaN       NaN       NaN
G    0.047163  0.952837       NaN       NaN       NaN
H    0.026423  0.000000  0.000000  0.973577       NaN

df.T.plot(kind='bar', subplots=True, width=0.7, legend=False, 
                             layout=(2,4), sharex=True, sharey=True)
plt.tight_layout()
Run Code Online (Sandbox Code Playgroud)

我最终遇到以下错误:

AttributeError: 'NoneType' object has no attribute 'is_bbox'
Run Code Online (Sandbox Code Playgroud)

我也相信,这与github上发布的类似问题有关: DataFrame.hist()与matplotlib.pyplot.tight_layout()不相处#9351

因此,我正在寻找基于的解决方法subplots_adjust(*args, **kwargs)。最重要的是,我试图调整hspace参数。但是,调用pandasplot函数时不接受这些关键字参数。

有什么建议么?

python matplotlib pandas subplot

5
推荐指数
1
解决办法
2729
查看次数

来自两个熊猫数据框的分组条形图

我有两个包含不同值但结构相同的数据框:

df1 =

         0         1         2         3         4 
D  0.003073  0.014888  0.155815  0.826224       NaN
E  0.000568  0.000435  0.000967  0.002956  0.067249  
Run Code Online (Sandbox Code Playgroud)

df2 =

     0         1         2         3         4
D  0.746689  0.185769  0.060107  0.007435       NaN   
E  0.764552  0.000000  0.070288  0.101148  0.053499
Run Code Online (Sandbox Code Playgroud)

我想在单个分组的条形图中绘制两个数据框。另外,每一行(索引)应该是一个子图。

对于其中之一,直接使用熊猫可以轻松实现:

df1.T.plot(kind="bar", subplots=True, layout=(2,1), width=0.7, figsize=(10,10), sharey=True)
Run Code Online (Sandbox Code Playgroud)

我尝试使用

pd.concat([df1, df2], axis=1)
Run Code Online (Sandbox Code Playgroud)

这将导致一个新的数据框:

         0         1         2         3         4         0         1         2         3         4
D  0.003073  0.014888  0.155815  0.826224       NaN  0.746689  0.185769  0.060107  0.007435       NaN
E  0.000568  0.000435  0.000967  0.002956  0.067249  0.764552 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

5
推荐指数
1
解决办法
4007
查看次数

多个列上的熊猫数据框布尔掩码

我有一个数据框(df),其中包含几列具有实际测量值的列,而这些列中的每一列都具有不确定性(dA,dB,...)的相应列数(A,B,...):

   A    B    dA      dB
0 -1    3    0.31    0.08
1  2   -4    0.263   0.357
2  5    5    0.382   0.397
3 -4   -0.5  0.33    0.115
Run Code Online (Sandbox Code Playgroud)

我应用了一个函数来根据我的定义在测量列中查找有效的值

df[["A","B"]].apply(lambda x: x.abs()-5*df['d'+x.name] > 0)
Run Code Online (Sandbox Code Playgroud)

这将返回一个布尔数组:

     A          B 
0    False      True
1    True       True
2    True       True
3    True       False
Run Code Online (Sandbox Code Playgroud)

我想使用此数组在单个列中选择条件为true的数据帧中的行,例如A- >第1-3行,还查找所有输入列的条件为true的行,例如第1行和2。有没有一种有效的方法可以对付熊猫?

python boolean dataframe pandas

5
推荐指数
1
解决办法
3121
查看次数

使用pandas应用多个布尔掩码在列中设置值的有效方法

我有几个表达式,在数据框(df)中选择某些行,并返回多个布尔数组,如果你愿意,可以使用掩码.我想在此数据框中添加一个新列,并根据这些掩码用简单的整数("成员资格"指示符)填充它.在最直接的方法中,我将使用此代码:

df.assign(membership=3)
df[mask1].membership = 0
df[mask2].membership = 1
df[mask3].membership = 2
Run Code Online (Sandbox Code Playgroud)

这应该产生一个column(df["membership"]),如下所示:

1    0
2    0
3    1
4    1
5    3
Name: membership, dtype: int64
Run Code Online (Sandbox Code Playgroud)

掩码是由函数创建的(使用数据框中的其他列来创建输出)作为字典,如下所示:

maskDict = {0:mask1, 1:mask2, 2:mask3}
Run Code Online (Sandbox Code Playgroud)

哪里mask(1..3)是相同大小的数组包含[True,False,...]等.

我知道可能没有必要改进代码.但是,在比较更多条件时,我将在字典中使用更多布尔数组.

将该功能应用于数据帧并设置这些值的就地解决方案也将受到重视.

python boolean dataframe pandas

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

在熊猫数据框中附加两列的最小值

df

Purchase 
1
3
2
5
4   
7 
Run Code Online (Sandbox Code Playgroud)

df2

df2 = pd.DataFrame(columns=['Mean','Median','Max','Col4'])
df2 = df2.append({'Mean': (df['Purchase'].mean()),'Median':df['Purchase'].median(),'Max':(df['Purchase'].max()),'Col4':(df2[['Mean','Median']].min(axis=1))}, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

获得的输出

  Mean    Median   Max         Col4
  3.66     3.5      7   Series([], dtype: float64)
Run Code Online (Sandbox Code Playgroud)

预期产出

  Mean    Median   Max         Col4
  3.66     3.5      7           3.5     #Value in Col4 is Min(Mean, Median of df2)
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮忙吗?

python python-3.x pandas

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

标签 统计

python ×7

pandas ×6

dataframe ×4

boolean ×2

list ×1

matplotlib ×1

pip ×1

plot ×1

python-3.x ×1

subplot ×1