Cara menggunakan plot dataframe python

Saya memiliki bingkai data panda dan ingin memplot nilai dari satu kolom versus nilai dari kolom lain. Untungnya, ada plotmetode yang terkait dengan bingkai data yang tampaknya melakukan apa yang saya butuhkan:

df.plot[x='col_name_1', y='col_name_2']

Sayangnya, sepertinya di antara gaya plot [tercantum di sini setelah kindparameter] tidak ada titik. Saya dapat menggunakan garis atau batang atau bahkan kerapatan tetapi tidak titik. Adakah solusi yang bisa membantu untuk mengatasi masalah ini.

Jawaban:

Anda dapat menentukan stylegaris yang diplot saat memanggil df.plot:

df.plot[x='col_name_1', y='col_name_2', style='o']

The styleArgumen juga dapat menjadi dictatau list, misalnya:

import numpy as np
import pandas as pd

d = {'one' : np.random.rand[10],
     'two' : np.random.rand[10]}

df = pd.DataFrame[d]

df.plot[style=['o','rx']]

Semua format gaya yang diterima tercantum dalam dokumentasi matplotlib.pyplot.plot.

Untuk ini [dan kebanyakan merencanakan] saya tidak akan bergantung pada bungkus Panda untuk matplotlib. Sebagai gantinya, cukup gunakan matplotlib secara langsung:

import matplotlib.pyplot as plt
plt.scatter[df['col_name_1'], df['col_name_2']]
plt.show[] # Depending on whether you use IPython or interactive mode, etc.

dan ingat bahwa Anda dapat mengakses array NumPy dari nilai kolom dengan df.col_name_1.valuesmisalnya.

Saya mengalami masalah dalam menggunakan ini dengan default plotting Pandas dalam kasus kolom nilai Timestamp dengan presisi milidetik. Saat mencoba mengonversi objek menjadi datetime64tipe, saya juga menemukan masalah yang tidak menyenangkan: < Pandas memberikan hasil yang salah ketika menanyakan apakah nilai kolom Timestamp memiliki tipe attr >.

Pandasdigunakan matplotlibsebagai perpustakaan untuk plot dasar. Cara termudah dalam kasus Anda adalah menggunakan yang berikut ini:

import pandas as pd
import numpy as np

#creating sample data 
sample_data={'col_name_1':np.random.rand[20],
      'col_name_2': np.random.rand[20]}
df= pd.DataFrame[sample_data]
df.plot[x='col_name_1', y='col_name_2', style='o']

Namun, saya akan merekomendasikan untuk menggunakan seabornsebagai solusi alternatif jika Anda ingin memiliki plot yang lebih disesuaikan sementara tidak masuk ke tingkat dasar. matplotlib.Dalam hal ini Anda solusinya adalah sebagai berikut:

import pandas as pd
import seaborn as sns
import numpy as np

#creating sample data 
sample_data={'col_name_1':np.random.rand[20],
      'col_name_2': np.random.rand[20]}
df= pd.DataFrame[sample_data]
sns.scatterplot[x="col_name_1", y="col_name_2", data=df]

Sekarang di panda terbaru Anda bisa langsung menggunakan fungsi df.plot.scatter

df = pd.DataFrame[[[5.1, 3.5, 0], [4.9, 3.0, 0], [7.0, 3.2, 1],
                   [6.4, 3.2, 1], [5.9, 3.0, 2]],
                  columns=['length', 'width', 'species']]
ax1 = df.plot.scatter[x='length',
                      y='width',
                      c='DarkBlue']

//pandas.pydata.org/pandas-docs/version/0.23/generated/pandas.DataFrame.plot.scatter.html

Bài mới nhất

Chủ Đề