1つの列の一意の文字列をループし、一意の文字列に関連付けられた他の2つの列から辞書またはデータの配列を作成します

srajpara

次のように同じデータ構造の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完全に行き詰まっています。これが理にかなっていることを願っています。明確にする必要がある場合はお知らせください。ありがとう!

PieCot

次のコードで:

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]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ