두 개의 코드를 '연결'하고 싶습니다. 하나,
x= df[df['Value']==True].sort_values(by='Date').head(1).Date
Out[111]:
8 2020-03-04
첫 번째 값이 나타나는 날짜를 추출합니다. 다른 하나
df[df['Buy']==1].groupby('Date').size().plot(ax=ax, label='Buy')
시간에 따라 몇 가지 정보를 그려야합니다.
값이 참인 첫 번째 날짜에 수직선을 추가하고 싶습니다 2020-03-04
. 이렇게하려면 첫 번째 코드 (복사 및 붙여 넣기 사용 안 함)에서 플롯을 생성하는 다른 코드로이 정보를 추출해야합니다. 어떻게하는지에 대한 가이드를 좀 줄 수 있나요? 고마워
최신 정보:
다음과 같이 시도했습니다.
x= df[df['Value']==True].sort_values(by='Date').head(1).Date.tolist()
Out[111]:
8 ['2020-03-04']
df[df['Buy']==1].groupby('Date').size().plot(ax=ax, label='Buy')
ax.axvline(x, color="red", linestyle="--")
하지만 TypeError : unhashable type : 'numpy.ndarray'
일부 데이터 :
Date Buy Value
0 2020-02-23 0 False
1 2020-02-23 0 False
2 2020-02-25 0 False
3 2020-02-27 1 False
4 2020-03-03 1 False
5 2020-03-03 1 False
6 2020-03-03 0 False
7 2020-03-04 1 False
8 2020-03-04 0 True
9 2020-03-04 0 True
10 2020-03-04 1 False
11 2020-03-05 0 True
12 2020-03-05 1 False
13 2020-03-05 1 False
14 2020-03-05 1 False
15 2020-03-06 0 False
16 2020-03-06 1 False
17 2020-03-06 1 False
18 2020-03-07 1 False
19 2020-03-07 1 False
20 2020-03-07 1 False
21 2020-03-08 1 False
22 2020-03-08 1 False
23 2020-03-09 1 False
24 2020-03-09 1 False
25 2020-03-09 1 False
26 2020-03-10 1 False
27 2020-03-10 1 False
28 2020-03-10 1 False
29 2020-03-10 0 True
30 2020-03-11 1 False
31 2020-03-11 1 False
32 2020-03-13 0 True
33 2020-03-13 0 False
34 2020-03-15 0 True
35 2020-03-16 0 False
36 2020-03-19 0 False
37 2020-03-22 0 True
Date
열이있는 datetime
형식입니다.import pandas as pd
import random # for test data
import matplotlib.pyplot as plt
# setup sample data
random.seed(365)
rows = 40
data = {'Date': [random.choice(pd.bdate_range('2020-02-23', freq='d', periods=rows).strftime('%Y-%m-%d').tolist()) for _ in range(rows)],
'Buy': [random.choice([0, 1]) for _ in range(rows)],
'Value': [random.choice([False, True]) for _ in range(rows)]}
df = pd.DataFrame(data)
# set the Date column to a datetime
df.Date = pd.to_datetime(df.Date)
# extract values
x = df[df['Value']==True].sort_values(by='Date').head(1).Date
# groupby and plot
ax = df[df['Buy']==1].groupby('Date').size().plot(figsize=(7, 5), label='Buy')
# plot the vertical line; axvline works as long as x is one value
ax.axvline(x, color="red", linestyle="--", label='my value')
# show the legend
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left')
import matplotlib as mpl
print(mpl.__version__)
print(pd.__version__)
[out]:
3.3.1
1.1.0
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다