import requests as r
import json
import pandas as pd
from datetime import datetime, date
import matplotlib.pyplot as plt
%matplotlib inline
url = "https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=json&date=20200801&stockNo=2330"
r.get(url)
<Response [200]>
res = r.get(url)
res.json()
{'data': [['109/08/03', '77,288,571', '32,339,719,000', '420.50', '424.00', '415.00', '416.00', '-9.50', '43,360'], ['109/08/04', '41,697,445', '17,600,499,460', '421.50', '425.50', '418.50', '425.50', '+9.50', '22,250'], ['109/08/05', '47,460,834', '20,356,413,204', '430.50', '433.50', '426.00', '429.00', '+3.50', '24,715'], ['109/08/06', '43,443,627', '18,877,761,758', '437.50', '438.00', '431.00', '435.00', '+6.00', '22,414'], ['109/08/07', '37,611,388', '16,218,241,255', '433.50', '434.00', '428.00', '433.00', '-2.00', '19,739'], ['109/08/10', '36,067,500', '15,674,843,876', '427.50', '437.50', '427.50', '435.50', '+2.50', '21,342'], ['109/08/11', '34,545,313', '14,918,017,903', '432.00', '435.00', '429.00', '429.00', '-6.50', '20,297'], ['109/08/12', '53,980,474', '22,721,731,886', '422.00', '423.50', '419.00', '419.00', '-10.00', '32,761'], ['109/08/13', '45,669,335', '19,514,322,038', '428.00', '429.00', '424.50', '429.00', '+10.00', '21,499'], ['109/08/14', '24,259,947', '10,332,447,763', '424.00', '428.00', '423.00', '427.00', '-2.00', '12,642'], ['109/08/17', '34,607,731', '14,930,831,216', '427.00', '435.00', '425.50', '435.00', '+8.00', '20,823'], ['109/08/18', '45,504,160', '19,824,413,320', '440.00', '440.50', '432.00', '433.00', '-2.00', '21,119'], ['109/08/19', '31,486,800', '13,574,970,200', '436.00', '436.50', '427.50', '427.50', '-5.50', '18,279'], ['109/08/20', '75,155,235', '31,353,886,930', '427.00', '427.50', '401.00', '415.00', '-12.50', '45,670'], ['109/08/21', '41,956,467', '17,770,610,338', '421.50', '427.00', '420.00', '424.50', '+9.50', '23,059'], ['109/08/24', '49,199,406', '21,139,093,710', '427.50', '434.50', '425.00', '428.00', '+3.50', '24,672'], ['109/08/25', '37,024,899', '16,076,146,369', '433.50', '436.00', '430.50', '434.50', '+6.50', '22,035'], ['109/08/26', '41,406,340', '18,169,230,108', '435.50', '442.00', '435.00', '442.00', '+7.50', '25,305'], ['109/08/27', '57,206,712', '25,658,355,402', '448.00', '453.50', '444.00', '444.00', '+2.00', '31,575'], ['109/08/28', '57,039,210', '24,868,453,700', '440.00', '440.50', '431.00', '435.00', '-9.00', '35,253'], ['109/08/31', '88,569,538', '38,106,113,563', '437.00', '439.50', '426.50', '426.50', '-8.50', '28,294']], 'date': '20200801', 'fields': ['日期', '成交股數', '成交金額', '開盤價', '最高價', '最低價', '收盤價', '漲跌價差', '成交筆數'], 'notes': ['符號說明:+/-/X表示漲/跌/不比價', '當日統計資訊含一般、零股、盤後定價、鉅額交易,不含拍賣、標購。', 'ETF證券代號第六碼為K、M、S、C者,表示該ETF以外幣交易。'], 'stat': 'OK', 'title': '109年08月 2330 台積電 各日成交資訊'}
stock_json = res.json()
stock_json['data']
[['109/08/03', '77,288,571', '32,339,719,000', '420.50', '424.00', '415.00', '416.00', '-9.50', '43,360'], ['109/08/04', '41,697,445', '17,600,499,460', '421.50', '425.50', '418.50', '425.50', '+9.50', '22,250'], ['109/08/05', '47,460,834', '20,356,413,204', '430.50', '433.50', '426.00', '429.00', '+3.50', '24,715'], ['109/08/06', '43,443,627', '18,877,761,758', '437.50', '438.00', '431.00', '435.00', '+6.00', '22,414'], ['109/08/07', '37,611,388', '16,218,241,255', '433.50', '434.00', '428.00', '433.00', '-2.00', '19,739'], ['109/08/10', '36,067,500', '15,674,843,876', '427.50', '437.50', '427.50', '435.50', '+2.50', '21,342'], ['109/08/11', '34,545,313', '14,918,017,903', '432.00', '435.00', '429.00', '429.00', '-6.50', '20,297'], ['109/08/12', '53,980,474', '22,721,731,886', '422.00', '423.50', '419.00', '419.00', '-10.00', '32,761'], ['109/08/13', '45,669,335', '19,514,322,038', '428.00', '429.00', '424.50', '429.00', '+10.00', '21,499'], ['109/08/14', '24,259,947', '10,332,447,763', '424.00', '428.00', '423.00', '427.00', '-2.00', '12,642'], ['109/08/17', '34,607,731', '14,930,831,216', '427.00', '435.00', '425.50', '435.00', '+8.00', '20,823'], ['109/08/18', '45,504,160', '19,824,413,320', '440.00', '440.50', '432.00', '433.00', '-2.00', '21,119'], ['109/08/19', '31,486,800', '13,574,970,200', '436.00', '436.50', '427.50', '427.50', '-5.50', '18,279'], ['109/08/20', '75,155,235', '31,353,886,930', '427.00', '427.50', '401.00', '415.00', '-12.50', '45,670'], ['109/08/21', '41,956,467', '17,770,610,338', '421.50', '427.00', '420.00', '424.50', '+9.50', '23,059'], ['109/08/24', '49,199,406', '21,139,093,710', '427.50', '434.50', '425.00', '428.00', '+3.50', '24,672'], ['109/08/25', '37,024,899', '16,076,146,369', '433.50', '436.00', '430.50', '434.50', '+6.50', '22,035'], ['109/08/26', '41,406,340', '18,169,230,108', '435.50', '442.00', '435.00', '442.00', '+7.50', '25,305'], ['109/08/27', '57,206,712', '25,658,355,402', '448.00', '453.50', '444.00', '444.00', '+2.00', '31,575'], ['109/08/28', '57,039,210', '24,868,453,700', '440.00', '440.50', '431.00', '435.00', '-9.00', '35,253'], ['109/08/31', '88,569,538', '38,106,113,563', '437.00', '439.50', '426.50', '426.50', '-8.50', '28,294']]
pd.DataFrame.from_dict(stock_json['data'])
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|---|
0 | 109/08/03 | 77,288,571 | 32,339,719,000 | 420.50 | 424.00 | 415.00 | 416.00 | -9.50 | 43,360 |
1 | 109/08/04 | 41,697,445 | 17,600,499,460 | 421.50 | 425.50 | 418.50 | 425.50 | +9.50 | 22,250 |
2 | 109/08/05 | 47,460,834 | 20,356,413,204 | 430.50 | 433.50 | 426.00 | 429.00 | +3.50 | 24,715 |
3 | 109/08/06 | 43,443,627 | 18,877,761,758 | 437.50 | 438.00 | 431.00 | 435.00 | +6.00 | 22,414 |
4 | 109/08/07 | 37,611,388 | 16,218,241,255 | 433.50 | 434.00 | 428.00 | 433.00 | -2.00 | 19,739 |
5 | 109/08/10 | 36,067,500 | 15,674,843,876 | 427.50 | 437.50 | 427.50 | 435.50 | +2.50 | 21,342 |
6 | 109/08/11 | 34,545,313 | 14,918,017,903 | 432.00 | 435.00 | 429.00 | 429.00 | -6.50 | 20,297 |
7 | 109/08/12 | 53,980,474 | 22,721,731,886 | 422.00 | 423.50 | 419.00 | 419.00 | -10.00 | 32,761 |
8 | 109/08/13 | 45,669,335 | 19,514,322,038 | 428.00 | 429.00 | 424.50 | 429.00 | +10.00 | 21,499 |
9 | 109/08/14 | 24,259,947 | 10,332,447,763 | 424.00 | 428.00 | 423.00 | 427.00 | -2.00 | 12,642 |
10 | 109/08/17 | 34,607,731 | 14,930,831,216 | 427.00 | 435.00 | 425.50 | 435.00 | +8.00 | 20,823 |
11 | 109/08/18 | 45,504,160 | 19,824,413,320 | 440.00 | 440.50 | 432.00 | 433.00 | -2.00 | 21,119 |
12 | 109/08/19 | 31,486,800 | 13,574,970,200 | 436.00 | 436.50 | 427.50 | 427.50 | -5.50 | 18,279 |
13 | 109/08/20 | 75,155,235 | 31,353,886,930 | 427.00 | 427.50 | 401.00 | 415.00 | -12.50 | 45,670 |
14 | 109/08/21 | 41,956,467 | 17,770,610,338 | 421.50 | 427.00 | 420.00 | 424.50 | +9.50 | 23,059 |
15 | 109/08/24 | 49,199,406 | 21,139,093,710 | 427.50 | 434.50 | 425.00 | 428.00 | +3.50 | 24,672 |
16 | 109/08/25 | 37,024,899 | 16,076,146,369 | 433.50 | 436.00 | 430.50 | 434.50 | +6.50 | 22,035 |
17 | 109/08/26 | 41,406,340 | 18,169,230,108 | 435.50 | 442.00 | 435.00 | 442.00 | +7.50 | 25,305 |
18 | 109/08/27 | 57,206,712 | 25,658,355,402 | 448.00 | 453.50 | 444.00 | 444.00 | +2.00 | 31,575 |
19 | 109/08/28 | 57,039,210 | 24,868,453,700 | 440.00 | 440.50 | 431.00 | 435.00 | -9.00 | 35,253 |
20 | 109/08/31 | 88,569,538 | 38,106,113,563 | 437.00 | 439.50 | 426.50 | 426.50 | -8.50 | 28,294 |
stock_df = pd.DataFrame.from_dict(stock_json['data'])
stock_df.head()
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|---|
0 | 109/08/03 | 77,288,571 | 32,339,719,000 | 420.50 | 424.00 | 415.00 | 416.00 | -9.50 | 43,360 |
1 | 109/08/04 | 41,697,445 | 17,600,499,460 | 421.50 | 425.50 | 418.50 | 425.50 | +9.50 | 22,250 |
2 | 109/08/05 | 47,460,834 | 20,356,413,204 | 430.50 | 433.50 | 426.00 | 429.00 | +3.50 | 24,715 |
3 | 109/08/06 | 43,443,627 | 18,877,761,758 | 437.50 | 438.00 | 431.00 | 435.00 | +6.00 | 22,414 |
4 | 109/08/07 | 37,611,388 | 16,218,241,255 | 433.50 | 434.00 | 428.00 | 433.00 | -2.00 | 19,739 |
stock_json['fields']
['日期', '成交股數', '成交金額', '開盤價', '最高價', '最低價', '收盤價', '漲跌價差', '成交筆數']
stock_df.columns = stock_json['fields']
stock_df.head()
日期 | 成交股數 | 成交金額 | 開盤價 | 最高價 | 最低價 | 收盤價 | 漲跌價差 | 成交筆數 | |
---|---|---|---|---|---|---|---|---|---|
0 | 109/08/03 | 77,288,571 | 32,339,719,000 | 420.50 | 424.00 | 415.00 | 416.00 | -9.50 | 43,360 |
1 | 109/08/04 | 41,697,445 | 17,600,499,460 | 421.50 | 425.50 | 418.50 | 425.50 | +9.50 | 22,250 |
2 | 109/08/05 | 47,460,834 | 20,356,413,204 | 430.50 | 433.50 | 426.00 | 429.00 | +3.50 | 24,715 |
3 | 109/08/06 | 43,443,627 | 18,877,761,758 | 437.50 | 438.00 | 431.00 | 435.00 | +6.00 | 22,414 |
4 | 109/08/07 | 37,611,388 | 16,218,241,255 | 433.50 | 434.00 | 428.00 | 433.00 | -2.00 | 19,739 |
url = "https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=json&date=20200801&stockNo=2330"
month_list = pd.date_range('2020-06-01','2020-08-01', freq='MS').strftime("%Y%m%d").tolist()
for month in month_list:
print(month)
20200601 20200701 20200801
df = pd.DataFrame()
df
for month in month_list:
url = "https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=json&date="+ month + "&stockNo=2330"
res = r.get(url)
stock_json = res.json()
stock_df = pd.DataFrame.from_dict(stock_json['data'])
df = df.append(stock_df, ignore_index = True)
df.columns = ['日期', '成交股數', '成交金額', '開盤價', '最高價', '最低價', '收盤價', '漲跌價差', '成交筆數']
df.head()
日期 | 成交股數 | 成交金額 | 開盤價 | 最高價 | 最低價 | 收盤價 | 漲跌價差 | 成交筆數 | |
---|---|---|---|---|---|---|---|---|---|
0 | 109/06/01 | 37,936,214 | 11,205,227,094 | 294.00 | 296.50 | 293.50 | 295.50 | +3.50 | 15,502 |
1 | 109/06/02 | 26,663,587 | 7,908,476,089 | 296.00 | 297.50 | 296.00 | 296.50 | +1.00 | 9,743 |
2 | 109/06/03 | 67,894,337 | 20,354,971,677 | 300.00 | 301.00 | 298.00 | 301.00 | +4.50 | 33,062 |
3 | 109/06/04 | 47,225,322 | 14,414,983,532 | 305.00 | 306.00 | 304.00 | 306.00 | +5.00 | 24,482 |
4 | 109/06/05 | 44,077,262 | 13,655,618,646 | 308.50 | 312.00 | 308.00 | 311.50 | +5.50 | 24,096 |
def get_stock_data(start_year, start_month, end_year, end_month, stock_code):
start_date = str(date(start_year, start_month, 1))
end_date = str(date(end_year, end_month, 1))
month_list = pd.date_range(start_date, end_date, freq='MS').strftime("%Y%m%d").tolist()
df = pd.DataFrame()
for month in month_list:
url = "https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=json&date="+ month + "&stockNo=" + str(stock_code)
res = r.get(url)
stock_json = res.json()
stock_df = pd.DataFrame.from_dict(stock_json['data'])
df = df.append(stock_df, ignore_index = True)
df.columns = ['日期', '成交股數', '成交金額', '開盤價', '最高價', '最低價', '收盤價', '漲跌價差', '成交筆數']
return df
get_stock_data(start_year = 2019, start_month = 6, end_year = 2019, end_month = 8, stock_code = 2330)
日期 | 成交股數 | 成交金額 | 開盤價 | 最高價 | 最低價 | 收盤價 | 漲跌價差 | 成交筆數 | |
---|---|---|---|---|---|---|---|---|---|
0 | 108/06/03 | 36,687,092 | 8,651,389,851 | 235.50 | 238.50 | 232.00 | 238.00 | +2.50 | 8,857 |
1 | 108/06/04 | 24,443,428 | 5,745,045,809 | 237.50 | 238.00 | 233.00 | 233.00 | -5.00 | 11,779 |
2 | 108/06/05 | 35,901,584 | 8,461,930,934 | 238.00 | 238.00 | 234.00 | 235.00 | +2.00 | 12,064 |
3 | 108/06/06 | 34,651,731 | 8,008,768,323 | 231.50 | 232.00 | 229.50 | 232.00 | -3.00 | 14,723 |
4 | 108/06/10 | 35,521,888 | 8,442,986,620 | 237.50 | 240.00 | 234.50 | 240.00 | +8.00 | 15,588 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
58 | 108/08/26 | 31,740,620 | 7,910,873,500 | 249.00 | 250.50 | 248.50 | 248.50 | -5.50 | 13,388 |
59 | 108/08/27 | 53,664,951 | 13,410,582,151 | 250.50 | 251.00 | 248.50 | 250.00 | +1.50 | 8,939 |
60 | 108/08/28 | 15,280,882 | 3,852,096,070 | 250.50 | 253.00 | 250.50 | 252.00 | +2.00 | 6,829 |
61 | 108/08/29 | 20,085,767 | 5,078,703,588 | 253.00 | 254.00 | 251.00 | 254.00 | +2.00 | 6,596 |
62 | 108/08/30 | 35,299,201 | 9,092,482,858 | 256.50 | 259.00 | 256.00 | 259.00 | +5.00 | 13,703 |
63 rows × 9 columns
stock = get_stock_data(start_year = 2019, start_month = 6, end_year = 2019, end_month = 8, stock_code = 2330)
stock.head()
日期 | 成交股數 | 成交金額 | 開盤價 | 最高價 | 最低價 | 收盤價 | 漲跌價差 | 成交筆數 | |
---|---|---|---|---|---|---|---|---|---|
0 | 108/06/03 | 36,687,092 | 8,651,389,851 | 235.50 | 238.50 | 232.00 | 238.00 | +2.50 | 8,857 |
1 | 108/06/04 | 24,443,428 | 5,745,045,809 | 237.50 | 238.00 | 233.00 | 233.00 | -5.00 | 11,779 |
2 | 108/06/05 | 35,901,584 | 8,461,930,934 | 238.00 | 238.00 | 234.00 | 235.00 | +2.00 | 12,064 |
3 | 108/06/06 | 34,651,731 | 8,008,768,323 | 231.50 | 232.00 | 229.50 | 232.00 | -3.00 | 14,723 |
4 | 108/06/10 | 35,521,888 | 8,442,986,620 | 237.50 | 240.00 | 234.50 | 240.00 | +8.00 | 15,588 |
for row in range(stock.shape[0]):
date2 = stock.iloc[row,0].split('/')
stock.iloc[row, 0] = datetime(int(date2[0]) + 1911, int(date2[1]), int(date2[2]))
stock.head(10)
日期 | 成交股數 | 成交金額 | 開盤價 | 最高價 | 最低價 | 收盤價 | 漲跌價差 | 成交筆數 | |
---|---|---|---|---|---|---|---|---|---|
0 | 2019-06-03 00:00:00 | 36,687,092 | 8,651,389,851 | 235.50 | 238.50 | 232.00 | 238.00 | +2.50 | 8,857 |
1 | 2019-06-04 00:00:00 | 24,443,428 | 5,745,045,809 | 237.50 | 238.00 | 233.00 | 233.00 | -5.00 | 11,779 |
2 | 2019-06-05 00:00:00 | 35,901,584 | 8,461,930,934 | 238.00 | 238.00 | 234.00 | 235.00 | +2.00 | 12,064 |
3 | 2019-06-06 00:00:00 | 34,651,731 | 8,008,768,323 | 231.50 | 232.00 | 229.50 | 232.00 | -3.00 | 14,723 |
4 | 2019-06-10 00:00:00 | 35,521,888 | 8,442,986,620 | 237.50 | 240.00 | 234.50 | 240.00 | +8.00 | 15,588 |
5 | 2019-06-11 00:00:00 | 34,691,670 | 8,448,805,962 | 240.00 | 246.00 | 239.00 | 244.50 | +4.50 | 13,157 |
6 | 2019-06-12 00:00:00 | 30,409,556 | 7,469,805,086 | 244.50 | 247.50 | 243.00 | 246.00 | +1.50 | 11,457 |
7 | 2019-06-13 00:00:00 | 33,731,724 | 8,136,137,708 | 242.50 | 244.00 | 240.00 | 240.00 | -6.00 | 13,552 |
8 | 2019-06-14 00:00:00 | 35,403,556 | 8,396,819,832 | 238.50 | 239.50 | 236.00 | 236.00 | -4.00 | 14,911 |
9 | 2019-06-17 00:00:00 | 51,692,012 | 12,043,369,475 | 231.50 | 235.00 | 230.50 | 233.00 | -3.00 | 20,943 |
for col in [1, 2, 3, 4, 5, 6, 8]:
for row in range(stock.shape[0]):
stock.iloc[row, col] = float(stock.iloc[row,col].replace(',', ''))
stock.head(10)
日期 | 成交股數 | 成交金額 | 開盤價 | 最高價 | 最低價 | 收盤價 | 漲跌價差 | 成交筆數 | |
---|---|---|---|---|---|---|---|---|---|
0 | 2019-06-03 00:00:00 | 3.66871e+07 | 8.65139e+09 | 235.5 | 238.5 | 232 | 238 | +2.50 | 8857 |
1 | 2019-06-04 00:00:00 | 2.44434e+07 | 5.74505e+09 | 237.5 | 238 | 233 | 233 | -5.00 | 11779 |
2 | 2019-06-05 00:00:00 | 3.59016e+07 | 8.46193e+09 | 238 | 238 | 234 | 235 | +2.00 | 12064 |
3 | 2019-06-06 00:00:00 | 3.46517e+07 | 8.00877e+09 | 231.5 | 232 | 229.5 | 232 | -3.00 | 14723 |
4 | 2019-06-10 00:00:00 | 3.55219e+07 | 8.44299e+09 | 237.5 | 240 | 234.5 | 240 | +8.00 | 15588 |
5 | 2019-06-11 00:00:00 | 3.46917e+07 | 8.44881e+09 | 240 | 246 | 239 | 244.5 | +4.50 | 13157 |
6 | 2019-06-12 00:00:00 | 3.04096e+07 | 7.46981e+09 | 244.5 | 247.5 | 243 | 246 | +1.50 | 11457 |
7 | 2019-06-13 00:00:00 | 3.37317e+07 | 8.13614e+09 | 242.5 | 244 | 240 | 240 | -6.00 | 13552 |
8 | 2019-06-14 00:00:00 | 3.54036e+07 | 8.39682e+09 | 238.5 | 239.5 | 236 | 236 | -4.00 | 14911 |
9 | 2019-06-17 00:00:00 | 5.1692e+07 | 1.20434e+10 | 231.5 | 235 | 230.5 | 233 | -3.00 | 20943 |
stock.to_csv("2330.csv")
stock2 = stock[:10]
stock2
日期 | 成交股數 | 成交金額 | 開盤價 | 最高價 | 最低價 | 收盤價 | 漲跌價差 | 成交筆數 | |
---|---|---|---|---|---|---|---|---|---|
0 | 2019-06-03 00:00:00 | 3.66871e+07 | 8.65139e+09 | 235.5 | 238.5 | 232 | 238 | +2.50 | 8857 |
1 | 2019-06-04 00:00:00 | 2.44434e+07 | 5.74505e+09 | 237.5 | 238 | 233 | 233 | -5.00 | 11779 |
2 | 2019-06-05 00:00:00 | 3.59016e+07 | 8.46193e+09 | 238 | 238 | 234 | 235 | +2.00 | 12064 |
3 | 2019-06-06 00:00:00 | 3.46517e+07 | 8.00877e+09 | 231.5 | 232 | 229.5 | 232 | -3.00 | 14723 |
4 | 2019-06-10 00:00:00 | 3.55219e+07 | 8.44299e+09 | 237.5 | 240 | 234.5 | 240 | +8.00 | 15588 |
5 | 2019-06-11 00:00:00 | 3.46917e+07 | 8.44881e+09 | 240 | 246 | 239 | 244.5 | +4.50 | 13157 |
6 | 2019-06-12 00:00:00 | 3.04096e+07 | 7.46981e+09 | 244.5 | 247.5 | 243 | 246 | +1.50 | 11457 |
7 | 2019-06-13 00:00:00 | 3.37317e+07 | 8.13614e+09 | 242.5 | 244 | 240 | 240 | -6.00 | 13552 |
8 | 2019-06-14 00:00:00 | 3.54036e+07 | 8.39682e+09 | 238.5 | 239.5 | 236 | 236 | -4.00 | 14911 |
9 | 2019-06-17 00:00:00 | 5.1692e+07 | 1.20434e+10 | 231.5 | 235 | 230.5 | 233 | -3.00 | 20943 |
fig = plt.figure(figsize = (10, 5))
plt.title('2330 Stock Price')
plt.plot(stock2['日期'], stock2['收盤價'])
plt.plot(stock2['日期'], stock2['開盤價'])
plt.legend(['Close', 'Open'])
/Users/hou/anaconda3/lib/python3.6/site-packages/matplotlib/cbook/__init__.py:2062: FutureWarning: Support for multi-dimensional indexing (e.g. `obj[:, None]`) is deprecated and will be removed in a future version. Convert to a numpy array before indexing instead. x[:, None] /Users/hou/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_base.py:248: FutureWarning: Support for multi-dimensional indexing (e.g. `obj[:, None]`) is deprecated and will be removed in a future version. Convert to a numpy array before indexing instead. x = x[:, np.newaxis] /Users/hou/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_base.py:250: FutureWarning: Support for multi-dimensional indexing (e.g. `obj[:, None]`) is deprecated and will be removed in a future version. Convert to a numpy array before indexing instead. y = y[:, np.newaxis]
<matplotlib.legend.Legend at 0x7feaf94c86a0>