반응형
데이터 프레임의 여러 데이터 그룹을 하나의 그림으로 표시하는 방법
아래와 같은 형식으로 수년간의 온도 기록이 있는 온도 파일을 가지고 있습니다.
2012-04-12,16:13:09,20.6
2012-04-12,17:13:09,20.9
2012-04-12,18:13:09,20.6
2007-05-12,19:13:09,5.4
2007-05-12,20:13:09,20.6
2007-05-12,20:13:09,20.6
2005-08-11,11:13:09,20.6
2005-08-11,11:13:09,17.5
2005-08-13,07:13:09,20.6
2006-04-13,01:13:09,20.6
매년 기록의 숫자와 시간이 다르기 때문에 판다의 날짜 표시는 모두 다릅니다.
비교를 위해 다른 연도의 데이터를 같은 그림에 표시하려고 합니다.X축은 1월부터 12월까지이고, Y축은 온도입니다.어떻게 하면 좋을까요?
시도:
ax = df1.plot()
df2.plot(ax=ax)
Jupyter/Ipython 노트북을 실행하고 있으며 사용에 문제가 있는 경우;
ax = df1.plot()
df2.plot(ax=ax)
같은 셀 안에서 명령을 실행합니다!!어떤 이유에서인지 그것들이 순차적인 세포로 분리될 때 작동하지 않습니다.적어도 저는.
- Chang의 답변은 동일한 데이터 프레임에 다른 데이터 프레임을 플롯하는 방법을 보여줍니다.
axes
. - 이 경우 모든 데이터가 동일한 데이터 프레임에 있으므로 및 을 사용하는 것이 좋습니다.
- 또는 를 사용할 수 있습니다.
dfp = df.pivot_table(index='Month', columns='Year', values='value', aggfunc='mean')
- 사용 시,
names=
파일에 열 머리글이 없을 때 열 머리글을 만듭니다.'date'
열을 구문 분석해야 합니다.datetime64[ns] Dtype
그래서 추출기는 추출하는 데 사용될 수 있습니다.month
그리고.year
.
import pandas as pd
# given the data in a file as shown in the op
df = pd.read_csv('temp.csv', names=['date', 'time', 'value'], parse_dates=['date'])
# create additional month and year columns for convenience
df['Year'] = df.date.dt.year
df['Month'] = df.date.dt.month
# groupby the month a year and aggreate mean on the value column
dfg = df.groupby(['Month', 'Year'])['value'].mean().unstack()
# display(dfg)
Year 2005 2006 2007 2012
Month
4 NaN 20.6 NaN 20.7
5 NaN NaN 15.533333 NaN
8 19.566667 NaN NaN NaN
이제는 매년을 별도의 선으로 표시하는 것이 쉽습니다.OP에는 매년 하나의 관측치만 있으므로 마커만 표시됩니다.
ax = dfg.plot(figsize=(9, 7), marker='.', xticks=dfg.index)
여러 데이터 프레임에 대해 이 작업을 수행하려면 다음과 같이 루프에 대해 를 수행할 수 있습니다.
fig = plt.figure(num=None, figsize=(10, 8))
ax = dict_of_dfs['FOO'].column.plot()
for BAR in dict_of_dfs.keys():
if BAR == 'FOO':
pass
else:
dict_of_dfs[BAR].column.plot(ax=ax)
이것은 또한 다음과 같은 기능 없이 구현될 수 있습니다.if
조건:
fig, ax = plt.subplots()
for BAR in dict_of_dfs.keys():
dict_of_dfs[BAR].plot(ax=ax)
다음을 활용할 수 있습니다.hue
의 매개 변수.seaborn
예:
import seaborn as sns
df = sns.load_dataset('flights')
year month passengers
0 1949 Jan 112
1 1949 Feb 118
2 1949 Mar 132
3 1949 Apr 129
4 1949 May 121
.. ... ... ...
139 1960 Aug 606
140 1960 Sep 508
141 1960 Oct 461
142 1960 Nov 390
143 1960 Dec 432
sns.lineplot(x='month', y='passengers', hue='year', data=df)
언급URL : https://stackoverflow.com/questions/13872533/how-to-plot-different-groups-of-data-from-a-dataframe-into-a-single-figure
반응형
'programing' 카테고리의 다른 글
파이썬에서 다른 클래스 내에서 클래스를 정의하면 이점이 있습니까? (0) | 2023.07.23 |
---|---|
Spark Dataframe은 중복된 이름을 가진 열을 구분합니다. (0) | 2023.07.23 |
MySQL에서 지연 함수 시뮬레이션 (0) | 2023.07.23 |
오라클 업데이트 문에서 테이블 이름 대신 하위 조회 사용 (0) | 2023.07.23 |
Varchar의 인덱스는 성능에 차이가 있습니까? (0) | 2023.07.23 |