[python] 포인트를 사용하여 팬더 데이터 프레임의 두 열을 그리는 방법은 무엇입니까?
팬더 데이터 프레임이 있고 한 열의 값과 다른 열의 값을 플로팅하고 싶습니다. 다행히도 plot
필요한 작업을 수행하는 것처럼 보이는 데이터 프레임과 관련된 방법이 있습니다.
df.plot(x='col_name_1', y='col_name_2')
불행히도, (열거 된 플롯 스타일 중에서처럼 보이는 여기에 애프터 kind
지점이없는 매개 변수). 선이나 막대 또는 밀도를 사용할 수 있지만 점은 사용할 수 없습니다. 이 문제를 해결하는 데 도움이 될 수있는 해결 방법이 있습니까?
답변
다음 style
을 호출 할 때 플롯 된 선의을 지정할 수 있습니다 df.plot
.
df.plot(x='col_name_1', y='col_name_2', style='o')
style
인수도 될 수 있습니다 dict
또는 list
, 예를 :
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'])
허용되는 모든 스타일 형식은의 문서에 나열되어 matplotlib.pyplot.plot
있습니다.
답변
이를 위해 (그리고 대부분의 플로팅) matplotlib에 Pandas 래퍼에 의존하지 않습니다. 대신 matplotlib를 직접 사용하십시오.
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.
df.col_name_1.values
예를 들어 열 값의 NumPy 배열에 액세스 할 수 있습니다 .
밀리 초 정밀도의 타임 스탬프 값 열의 경우 Pandas 기본 플로팅과 함께 이것을 사용하는 데 문제가 발생했습니다. 객체를 datetime64
유형 으로 변환하려고 할 때 불쾌한 문제도 발견했습니다. < Pandas는 Timestamp 열 값에 attr astype > 이 있는지 묻을 때 잘못된 결과를 제공합니다 .
답변
Pandas
matplotlib
기본 플롯의 라이브러리로 사용 합니다. 귀하의 경우 가장 쉬운 방법은 다음을 사용하는 것입니다.
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')
그러나 seaborn
기본 수준으로 이동하지 않고 더 많은 사용자 정의 플롯을 원할 경우 대체 솔루션 으로 사용 하는 것이 좋습니다 matplotlib.
.이 경우 솔루션은 다음과 같습니다.
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)
답변
이제 최신 팬더에서 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')
https://pandas.pydata.org/pandas-docs/version/0.23/generated/pandas.DataFrame.plot.scatter.html