[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 > 이 있는지 묻을 때 잘못된 결과를 제공합니다 .


답변

Pandasmatplotlib기본 플롯의 라이브러리로 사용 합니다. 귀하의 경우 가장 쉬운 방법은 다음을 사용하는 것입니다.

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


답변