运行命令给我以下错误:
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) 我有一个包含多列的数据框 (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)
但是,这会导致条形图彼此叠加(未堆叠!) - 我想将它们分组。
我才明白,matplotlib的tight_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函数时不接受这些关键字参数。
有什么建议么?
我有两个包含不同值但结构相同的数据框:
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) 我有一个数据框(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。有没有一种有效的方法可以对付熊猫?
我有几个表达式,在数据框(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,...]等.
我知道可能没有必要改进代码.但是,在比较更多条件时,我将在字典中使用更多布尔数组.
将该功能应用于数据帧并设置这些值的就地解决方案也将受到重视.
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 ×7
pandas ×6
dataframe ×4
boolean ×2
list ×1
matplotlib ×1
pip ×1
plot ×1
python-3.x ×1
subplot ×1