如何通过在 Python 中分组来分发相同的数据
How to distribute the same data by grouping in Python
我有一个 table 如下所示。
根据上面的table,我想绘制3维特征的分布。它包括三种 class ,例如正常、高和低。我为此创建了以下代码。
%matplotlib inline
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
labels = df.class_type
for l in labels:
attr1 = df.X1
attr2 = df.X2
attr3 = df.X3
ax.scatter(xs = attr1, ys = attr2, zs = attr3, label = "normal")
ax.scatter(xs = attr1, ys = attr2, zs = attr3, label = "hyper")
ax.scatter(xs = attr1, ys = attr2, zs = attr3, label = "hypo")
ax.set_title("1.Grup")
ax.set_xlabel("atr1")
ax.set_ylabel("atr2")
ax.set_zlabel("atr3")
plt.show()
但是我想画一个像下面这样的情节。我该怎么做?提前致谢
我找到了答案。
我做了一个例子而不是你的数据框。
首先,创建一个数据框。
%matplotlib inline
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import pandas as pd
import itertools
df = pd.DataFrame({'class_att': [1, 1, 2, 2, 3, 3],
'X1': [100, 110, 120, 130, 140, 150],
'X2': [10, 20, 30, 40, 50, 60],
'X3': [50, 60, 70, 80, 90, 100],
'class_type': ['normal', 'normal', 'hyper', 'hyper', 'hypo', 'hypo']})
您可以创建一个组作为 groupby() 的函数。
groups = df.groupby('class_type')
然后画散点图就大功告成了
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
colors = itertools.cycle(["r", "b", "g"])
for name, group in groups:
print(group)
ax.scatter(xs=group.X1, ys=group.X2, zs=group.X3, label=name, color=next(colors), alpha=1)
ax.legend()
plt.show()
我有一个 table 如下所示。
根据上面的table,我想绘制3维特征的分布。它包括三种 class ,例如正常、高和低。我为此创建了以下代码。
%matplotlib inline
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
labels = df.class_type
for l in labels:
attr1 = df.X1
attr2 = df.X2
attr3 = df.X3
ax.scatter(xs = attr1, ys = attr2, zs = attr3, label = "normal")
ax.scatter(xs = attr1, ys = attr2, zs = attr3, label = "hyper")
ax.scatter(xs = attr1, ys = attr2, zs = attr3, label = "hypo")
ax.set_title("1.Grup")
ax.set_xlabel("atr1")
ax.set_ylabel("atr2")
ax.set_zlabel("atr3")
plt.show()
但是我想画一个像下面这样的情节。我该怎么做?提前致谢
我找到了答案。 我做了一个例子而不是你的数据框。 首先,创建一个数据框。
%matplotlib inline
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import pandas as pd
import itertools
df = pd.DataFrame({'class_att': [1, 1, 2, 2, 3, 3],
'X1': [100, 110, 120, 130, 140, 150],
'X2': [10, 20, 30, 40, 50, 60],
'X3': [50, 60, 70, 80, 90, 100],
'class_type': ['normal', 'normal', 'hyper', 'hyper', 'hypo', 'hypo']})
您可以创建一个组作为 groupby() 的函数。
groups = df.groupby('class_type')
然后画散点图就大功告成了
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
colors = itertools.cycle(["r", "b", "g"])
for name, group in groups:
print(group)
ax.scatter(xs=group.X1, ys=group.X2, zs=group.X3, label=name, color=next(colors), alpha=1)
ax.legend()
plt.show()