web-dev-qa-db-ja.com

折れ線グラフのY軸に単一のデータフレームの2列をプロットする方法

3つの列(year、action、comedy)を含むデータフレームtotal_yearがあります。

合計年

enter image description here

x軸に年の列をプロットし、Y軸に(アクションとコメディ)をプロットしたい。

Y軸に2つの列(アクションとコメディ)をプロットする方法。これが私のコードです。 Y軸に1列のみをプロットします。

total_year[-15:].plot(x='year', y='action' ,figsize=(10,5), grid=True  )
8
Bilal Butt

Pandas.DataFrame.plot()はデフォルトでX軸のプロットにインデックスを使用し、他のすべての数値列はY値として使用されます。

したがって、year列をインデックスとして設定すると、トリックが実行されます。

total_year.set_index('year').plot(figsize=(10,5), grid=True)
8
MaxU

単一の列名の代わりに、pandasプロット関数のy引数にプロットする複数の列を指定できます。これらはリストとして指定する必要があります。つまり:

df.plot(x="year", y=["action", "comedy"])

完全な例:

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({"year": [1914,1915,1916,1919,1920],
                   "action" : [2.6,3.4,3.25,2.8,1.75],
                   "comedy" : [2.5,2.9,3.0,3.3,3.4] })
df.plot(x="year", y=["action", "comedy"])
plt.show()

enter image description here

すべての独立/機能変数は、オブジェクト/ int64/float64であるかどうかに関係なく、機能変数のタイプに基づいて、下記のループとコードを使用してdeendent(outcome-Y)変数でプロットできます。

この場合、Feature_col_X1(機能リストを含む)およびTarget_col_Y1がターゲット機能です。これを定義済みの関数で渡し、20個の機能のすべてのプロットを1つに取得できます

def plotforallvariables(Feature_col_X1,Target_col_Y1):
    for i in range(len(Feature_col_X1)):
        idx=Feature_col_X1[i]


        try:

            if data[idx].dtype =='O':
                #print('categorical')
                #%matplotlib inline
                #print(idx,'in X axis and also',Target_col_Y1 ,'in Y axis')




    pd.crosstab(data[idx],data[Target_col_Y1]).plot(kind='bar')
                #x=r'idx,'in X axis and also',Target_col_Y1 ,'in Y axis'
                #plt.title('x')
                #print(data[idx])
                #print(data[Target_col_Y1])
                #plt.xlabel(data[idx])
                #plt.ylabel(data[Target_col_Y1])

            Elif data[idx].dtype =='int64':
                #ax = plt.gca()
                #data.plot(kind='line',x=data[idx],y=data[Target_col_Y1])
                pd.crosstab(data[idx],data[Target_col_Y1]).plot(kind='line')
                #data.plot.scatter(x=data[idx],y=data[Target_col_Y1])
                #plt.show()
                #print('integer')


            Elif data[idx].dtype =='float64': 
                #print('float')
                pd.crosstab(data[idx],data[Target_col_Y1]).plot(kind='line')
                #data.plot(kind='line',x=data[idx],y=data[Target_col_Y1])

        except (ValueError,KeyError):
            print('skip error')

plotforallvariables(Feature_col_X,Target_col_Y)
0
Ayyasamy