Saya memiliki bingkai data panda dan ingin memplot nilai dari satu kolom versus nilai dari kolom lain. Untungnya, ada Sayangnya, sepertinya di antara gaya plot [tercantum di
sini setelah plot
metode yang terkait dengan bingkai data yang tampaknya melakukan apa yang saya butuhkan:df.plot[x='col_name_1', y='col_name_2']
kind
parameter] 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 style
garis yang
diplot saat memanggil df.plot
:
df.plot[x='col_name_1', y='col_name_2', style='o']
The style
Argumen juga dapat menjadi dict
atau 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.values
misalnya.
Saya mengalami masalah dalam menggunakan ini dengan default plotting Pandas dalam kasus kolom nilai Timestamp dengan presisi milidetik. Saat mencoba mengonversi objek menjadi datetime64
tipe, saya juga menemukan masalah yang tidak menyenangkan: <
Pandas memberikan hasil yang salah ketika menanyakan apakah nilai kolom Timestamp memiliki tipe attr >.
Pandas
digunakan matplotlib
sebagai 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 seaborn
sebagai 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