次のように同じデータ構造のcsvファイルがたくさんあります。
そして | バツ | バリアント名 |
---|---|---|
82 | 12 | F ^ W#Bfr18 |
76 | 3 | F ^ W#Bfr18 |
45 | 18 | * BCDS%q3rn |
59 | 14 | * BCDS%q3rn |
..。 | ..。 | ..。 |
各ファイルをループgroupby
してvariant_name
列の関数を使用し、x
およびy
列に対応するデータを収集して散布図を生成しようとしています(この例では、軸はxとyです)。
group = df.groupby('variant_name')
ラムダ関数を使用して、特定の値に関連付けられているすべてのx値とy値を保持できると思いましたが、variant_name
完全に行き詰まっています。これが理にかなっていることを願っています。明確にする必要がある場合はお知らせください。ありがとう!
次のコードで:
df.groupby('variant_name').agg({'x': list, 'y':list})
あなたが得る:
x y
variant
*BCDS%q3rn [45, 59] [18, 14]
F^W#Bfr18 [82, 76] [12, 3]
次に、さまざまなバリアントを反復処理してプロットできます。
import pylab as plt
fig, ax = plt.subplots(1, 1)
for t in df.groupby('variant').agg({'x': list, 'y':list}).itertuples():
ax.scatter(t.x, t.y, label=t.Index)
ax.legend()
plt.show()
編集
各バリアントのプロットが必要な場合は、forの本文で図の作成を移動できます。
alpha = 1
for t in df.groupby('variant_name').agg({'x': list, 'y':list}).itertuples():
fig, ax = plt.subplots(1, 1, num=t.Index)
plt.suptitle(t.Index)
ax.scatter(t.x, t.y, label=t.Index, alpha=alpha)
alpha
ここにパラメータを追加しました。ポイントが多い場合、プロットが改善され、データの密度を視覚化するのに役立つためです。
一方、より複雑なプロットに移行する場合は、プロットコードを残りのコードから分離することをお勧めします。
def _plot_variant(variant_data, alpha=1):
fig_title = variant_data.variant_name
fig, ax = plt.subplots(1, 1, num=fig_title)
plt.suptitle(fig_title)
ax.scatter(variant_data.x, variant_data.y, alpha=alpha)
df.groupby('variant_name', as_index=False).agg({'x': list, 'y':list}).apply(_plot_variant, axis=1)
plt.show()
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加