{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 08wk-2: Pandas (2)\n",
"\n",
"최규빈 \n",
"2023-04-26\n",
"\n",
"
\n",
"\n",
"# 강의영상\n",
"\n",
"> youtube:\n",
"> \n",
"\n",
"# import"
],
"id": "8d2675f6-8f62-439f-bab1-65cd2c7ae1cf"
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd"
],
"id": "e81630d3-04aa-449d-9195-b8b45f5bbe51"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# pandas 공부 3단계\n",
"\n",
"`-` df자료형의 메소드를 알아보자.\n",
"\n",
"## 전치"
],
"id": "47744033-ad48-4107-be18-e48515f3e5db"
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"arr = np.arange(2*3).reshape(2,3)\n",
"df = pd.DataFrame(arr)\n",
"df"
],
"id": "46606936"
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"df.T"
],
"id": "d3514ad4"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 합"
],
"id": "8cc29e90-d9a9-4c68-a72d-944f3105b5e2"
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"df"
],
"id": "82621565"
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"df.sum(axis=0)"
],
"id": "99e22eab-0cef-4c80-92f2-0f8c0375ee73"
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"df.sum(axis=1)"
],
"id": "71fb404f-b55c-4c16-93d7-2989e0c16c42"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## cumsum"
],
"id": "918b6f6f-c968-4a46-ac75-95237f8094ac"
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"df"
],
"id": "e207a37c-2c24-4419-ae72-00154d8e648d"
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"df.cumsum(axis=1) "
],
"id": "c7b68db2"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 형태변환"
],
"id": "5d01525f-e6dd-4a5b-ace4-125e4a344830"
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"df"
],
"id": "428fa1f1"
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"df.to_dict()"
],
"id": "58527f7e-7836-434b-9ae6-6a78a992d36a"
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"df.to_numpy()"
],
"id": "d425a4c1-8a46-4dc6-b16f-707b781d111a"
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"df.to_numpy().tolist()"
],
"id": "138ffbce-20d9-4b02-9fd9-e63b2acaa89e"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 기타메소드.. 생략…\n",
"\n",
"# pandas 공부 4단계"
],
"id": "183e50d4-194b-40cc-9b39-5e6b15ace250"
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
"np.random.seed(43052)\n",
"att = np.random.choice(np.arange(10,21)*5,20)\n",
"rep = np.random.choice(np.arange(5,21)*5,20)\n",
"mid = np.random.choice(np.arange(0,21)*5,20)\n",
"fin = np.random.choice(np.arange(0,21)*5,20)\n",
"key = ['2022-12'+str(s) for s in np.random.choice(np.arange(300,501),20,replace=False)]\n",
"df = pd.DataFrame({'att':att,'rep':rep,'mid':mid,'fin':fin},index=key)\n",
"df.head()"
],
"id": "15801715-efeb-4f09-8d18-48575b002bd0"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## query ($\\star$)\n",
"\n",
"`-` 예제1: att==90 and fin\\>30"
],
"id": "0aef14c1-3ecd-4afe-ba63-8ecb08ccdb59"
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [],
"source": [
"df.query('att ==90 and fin >30')"
],
"id": "45b4a0ea"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`-` 예제2: att\\=60"
],
"id": "dc5ff946-61da-4c3a-b40a-8b7474e1896f"
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [],
"source": [
"df.query('(mid+fin)/2>=60')"
],
"id": "d51a0b33"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`-` 예제6: att \\> mean(att)"
],
"id": "b6e3e506-ce20-4493-bcbf-e795f00f5edf"
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [],
"source": [
"_mean = df['att'].mean() \n",
"_mean "
],
"id": "ad9f2c38"
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [],
"source": [
"df.query('att> @_mean')"
],
"id": "7eaf06fb"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 시계열자료\n",
"\n",
"`-` 시계열자료"
],
"id": "9e35a50f-6c9e-4baf-9e6f-4c882e1eb0aa"
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [],
"source": [
"pd.date_range('20211226',periods=10)"
],
"id": "dd64bbeb-f548-4e57-b8ef-6e1f5e1b3b31"
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
"df=pd.DataFrame(np.random.normal(size=(10,4)),columns=list('ABCD'),index=pd.date_range('20211226',periods=10))\n",
"df"
],
"id": "4f523f3e-95fd-41ae-922b-7f93856ff239"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`-` 예제1: 시계열자료에서의 인덱싱"
],
"id": "5889bcf2-e212-4c05-88b8-82dc8fd318b8"
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [],
"source": [
"df.loc['2021-12-28':'2022-01-02',:]"
],
"id": "e2fd19bf"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`-` 예제3: 스트라이딩 (샘플링)"
],
"id": "781b1f8f-2889-4c15-8521-f942e3934ec0"
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [],
"source": [
"df.loc[::3,:]"
],
"id": "b672bab5"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`-` 예제4: query를 이용한 인덱싱"
],
"id": "031966fd-7def-4cb1-935c-21c5a015ecb0"
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [],
"source": [
"df.query(\"index <= '2021-12-30' or index=='2022-01-02'\")"
],
"id": "9ddd67ea"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 더러운 자료 (1)\n",
"\n",
"***예비학습: 하나의 col을 선택하는 가장 좋은 방법***"
],
"id": "0e127560-4bc1-49ba-ad7b-c081a43da8bc"
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [],
"source": [
"np.random.seed(43052)\n",
"att = np.random.choice(np.arange(10,21)*5,20)\n",
"rep = np.random.choice(np.arange(5,21)*5,20)\n",
"mid = np.random.choice(np.arange(0,21)*5,20)\n",
"fin = np.random.choice(np.arange(0,21)*5,20)\n",
"key = ['2022-12'+str(s) for s in np.random.choice(np.arange(300,501),20,replace=False)]\n",
"df = pd.DataFrame({'att':att,'rep':rep,'mid':mid,'fin':fin},index=key)\n",
"df.head()"
],
"id": "0d8a6d94-a50b-4be0-8986-2c40fc417658"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`-` att 선택"
],
"id": "00f33cdd-8722-4657-bf89-f901ad6fc37c"
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [],
"source": [
"df.att"
],
"id": "b0e18c88"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`-` 단점: 칼럼이름에 스페이스가 있으면 쓸 수 없음.\n",
"\n",
"***예비학습끝***\n",
"\n",
"------------------------------------------------------------------------\n",
"\n",
"`-` 누가 자료를 아래와 같이 주었다고 하자. (엑셀특)"
],
"id": "e14c86e5-7f4f-42a7-bfd4-c63fcc9a67e8"
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [],
"source": [
"df.columns = pd.Index(['att score', 'rep score', 'mid score', 'fin score'])\n",
"df.head()"
],
"id": "6c65c76d"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`-` 출석점수를 뽑고 싶다면?"
],
"id": "a71978ed-b0b7-4f8b-92bb-4fee8d3b262b"
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {},
"outputs": [],
"source": [
"df['att score']\n",
"# df.att score # 이코드는 실행불가능"
],
"id": "d6456f23"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`-` 출석점수가 90보다 작은 학생을 뽑고 싶다면?"
],
"id": "b112bb0b-b29e-4d2b-a6e3-c852f0464221"
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [],
"source": [
"df.loc[df['att score'] < 90, :] \n",
"# df.query('att score < 90')"
],
"id": "bd9f51d3"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`-` 그냥 컬럼이름을 바꾸고 하는것도 방법임"
],
"id": "01fea4af-d859-42fb-8d6c-9d309de5d111"
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {},
"outputs": [],
"source": [
"df.columns = pd.Index([l.replace(' ','_') for l in list(df.columns)])\n",
"df.head()"
],
"id": "2c751ad4"
},
{
"cell_type": "code",
"execution_count": 126,
"metadata": {},
"outputs": [],
"source": [
"df.query('att_score<90')\n",
"df.att_score"
],
"id": "d648d385"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`-` 그렇지만 col이름을 바꾸는게 항상 만능은 아니다.\n",
"\n",
"## 개인습관\n",
"\n",
"`-` row의 이름은 없는게 낫다고 생각함 // 시계열자료는 예외"
],
"id": "c3c7fe9a-71d6-4c6e-a037-b3d9311ff093"
},
{
"cell_type": "code",
"execution_count": 127,
"metadata": {},
"outputs": [],
"source": [
"np.random.seed(43052)\n",
"att = np.random.choice(np.arange(10,21)*5,20)\n",
"rep = np.random.choice(np.arange(5,21)*5,20)\n",
"mid = np.random.choice(np.arange(0,21)*5,20)\n",
"fin = np.random.choice(np.arange(0,21)*5,20)\n",
"key = ['2022-12'+str(s) for s in np.random.choice(np.arange(300,501),20,replace=False)]\n",
"df = pd.DataFrame({'att':att,'rep':rep,'mid':mid,'fin':fin},index=key)\n",
"df.head()"
],
"id": "6f026262-f8c2-4fc2-859f-d5b6baa10122"
},
{
"cell_type": "code",
"execution_count": 132,
"metadata": {},
"outputs": [],
"source": [
"df2 = df.reset_index().rename(columns={'index':'student_id'})\n",
"df2.head()"
],
"id": "efd9a418"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`-` 편해"
],
"id": "219bb730-85c7-475b-a6aa-95e6a1f1495b"
},
{
"cell_type": "code",
"execution_count": 142,
"metadata": {},
"outputs": [],
"source": [
"#df2.loc[0,'student_id':'rep'] \n",
"#df2.loc[[0],'student_id':'rep'] \n",
"#df2.loc[[0,4,5],'student_id':'rep'] \n",
"#df2.loc[range(5),'student_id':'rep'] \n",
"#df2.loc[5::2,'student_id':'rep'] "
],
"id": "ba09f9f4-173b-4b24-96c8-ceb35b2c2405"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 새로운 열의 추가 ($\\star\\star\\star$)\n",
"\n",
"`-` 자료"
],
"id": "7c34d9e0-f9f7-4376-97f7-6ea11e45e697"
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {},
"outputs": [],
"source": [
"np.random.seed(43052)\n",
"att = np.random.choice(np.arange(10,21)*5,20)\n",
"rep = np.random.choice(np.arange(5,21)*5,20)\n",
"mid = np.random.choice(np.arange(0,21)*5,20)\n",
"fin = np.random.choice(np.arange(0,21)*5,20)\n",
"student_id = [ '2023-12362', '2022-12471', '2023-12333', '2022-12400', '2022-12377',\n",
" '2022-12469', '2023-12314', '2022-12363', '2023-12445', '2023-12336',\n",
" '2023-12426', '2022-12380', '2023-12422', '2022-12488', '2022-12370',\n",
" '2023-12443', '2022-12463', '2023-12491', '2023-12340', '2022-12312' ]\n",
"df = pd.DataFrame({'student_id':student_id,'att':att,'rep':rep,'mid':mid,'fin':fin})\n",
"df"
],
"id": "56eb7528-1677-47a7-8471-47ad2c6fd9c6"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`-` 방법1: assign을 이용한 추가"
],
"id": "e24e2732-45be-45a1-85f6-8192f1c64eb5"
},
{
"cell_type": "code",
"execution_count": 149,
"metadata": {},
"outputs": [],
"source": [
"df.assign(total = df.att*0.1 + df.rep*0.2 + df.mid*0.3 + df.fin*0.4) "
],
"id": "af2e45ec"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`-` 방법2: eval을 이용한 추가"
],
"id": "7526b0ec-9d9b-4353-a750-0b80ef31720b"
},
{
"cell_type": "code",
"execution_count": 150,
"metadata": {},
"outputs": [],
"source": [
"df.eval('total = att*0.1 + rep*0.2 + mid*0.3 + fin*0.4') "
],
"id": "bb7b7f64"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`-` 방법3: `df['total']` 을 이용한 할당 // 추천X"
],
"id": "dd624b16-b06a-41f0-9f73-61a936f407af"
},
{
"cell_type": "code",
"execution_count": 154,
"metadata": {},
"outputs": [],
"source": [
"df['total'] = df.att*0.1 + df.rep*0.2 + df.mid*0.3 + df.fin*0.4\n",
"df"
],
"id": "75ae65d1"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`-` 아래의 자료에서 입학년도를 추가하고 싶다면?"
],
"id": "d5f68755-5844-48d4-90fe-25ca4383e505"
},
{
"cell_type": "code",
"execution_count": 155,
"metadata": {},
"outputs": [],
"source": [
"np.random.seed(43052)\n",
"att = np.random.choice(np.arange(10,21)*5,20)\n",
"rep = np.random.choice(np.arange(5,21)*5,20)\n",
"mid = np.random.choice(np.arange(0,21)*5,20)\n",
"fin = np.random.choice(np.arange(0,21)*5,20)\n",
"student_id = [ '2023-12362', '2022-12471', '2023-12333', '2022-12400', '2022-12377',\n",
" '2022-12469', '2023-12314', '2022-12363', '2023-12445', '2023-12336',\n",
" '2023-12426', '2022-12380', '2023-12422', '2022-12488', '2022-12370',\n",
" '2023-12443', '2022-12463', '2023-12491', '2023-12340', '2022-12312' ]\n",
"df = pd.DataFrame({'student_id':student_id,'att':att,'rep':rep,'mid':mid,'fin':fin})"
],
"id": "f4488030-4b32-4fc4-8ebb-9948a8bc0a72"
},
{
"cell_type": "code",
"execution_count": 166,
"metadata": {},
"outputs": [],
"source": [
"df.assign(year=[l.split('-')[0] for l in list(df.student_id)]).query('year==\"2022\"')"
],
"id": "aaa329bf"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# HW\n",
"\n",
"아래는 전북대 통계학과 학생들이 R과 Python을 공부한 평균 시간이다."
],
"id": "d125354e-b5b6-4ead-a21f-040a5d18f7ed"
},
{
"cell_type": "code",
"execution_count": 212,
"metadata": {},
"outputs": [],
"source": [
"np.random.seed(20230426)\n",
"day = ['2023-04-24(Mon)','2023-04-25(Tue)','2023-04-26(Wed)','2023-04-27(Thu)','2023-04-28(Fri)',\n",
" '2023-05-01(Mon)','2023-05-02(Tue)','2023-05-03(Wed)','2023-05-04(Thu)','2023-05-05(Fri)',\n",
" '2023-05-08(Mon)','2023-05-09(Tue)','2023-05-10(Wed)','2023-05-11(Thu)','2023-05-12(Fri)']\n",
"hours1 = np.random.randn(15).cumsum()*2\n",
"hours1 = hours1 - hours1.min() +1\n",
"hours2 = np.random.randn(15).cumsum()*2\n",
"hours2 = hours2 - hours2.min() +1\n",
"\n",
"df = pd.DataFrame({'hours(R)':hours1, 'hours(Python)':hours2},index=day)\n",
"df"
],
"id": "cea8600a-ec2b-4348-9a91-b40bcf4c0a76"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`(1)` 데이터프레임을 변형하여 아래와 같이 만들어라."
],
"id": "61cab58e-0a62-47e3-b13a-479b55317a25"
},
{
"cell_type": "code",
"execution_count": 213,
"metadata": {},
"outputs": [],
"source": [
"#"
],
"id": "a1f02496-3633-44c6-b97e-f797b1fbdf00"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"(풀이)"
],
"id": "e7cfcbc1-90f1-43cf-85e5-a1a74f0ef61b"
},
{
"cell_type": "code",
"execution_count": 211,
"metadata": {},
"outputs": [],
"source": [
"index = [l.replace(')','').split('(') for l in df.index]\n",
"df = df.assign(\n",
" day=[day for day, _ in index],\n",
" weekday=[weekday for _,weekday in index]\n",
").reset_index().loc[:,'hours(R)':]\n",
"df"
],
"id": "69b08397-e956-4d45-8fed-7087f863fabe"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`(2)` 4월달에 전북대학교 학생들은 R과 Python중 어떤 과목을 더 많이\n",
"공부하였는가?\n",
"\n",
"(풀이)"
],
"id": "283789ae-fd11-4e45-91eb-548a1b96c8c5"
},
{
"cell_type": "code",
"execution_count": 179,
"metadata": {},
"outputs": [],
"source": [
"df.query('day <= \"2023-04-28\"')['hours(R)'].sum()"
],
"id": "8eb8520a-99b7-4b12-8dc3-924d9cdb09d3"
},
{
"cell_type": "code",
"execution_count": 180,
"metadata": {},
"outputs": [],
"source": [
"df.query('day <= \"2023-04-28\"')['hours(Python)'].sum()"
],
"id": "5770bca2-f7c0-43cf-938d-d63690442262"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`(3)` ‘월-금’ 사이의 요일중 R을 가장 열심히 공부한 요일은 어느 요일인가?\n",
"\n",
"(풀이1)"
],
"id": "c38f60e0-652f-4bc6-aa70-9f1313f14072"
},
{
"cell_type": "code",
"execution_count": 144,
"metadata": {},
"outputs": [],
"source": [
"{s:df.loc[df.weekday == s,'hours(R)'].sum() for s in set(df.weekday)}"
],
"id": "fa9c7970-4d53-4a50-8255-f7fd57fa6c62"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"월요일에 가장 많이함\n",
"\n",
"(풀이2) – groupby를 이용하여 풀어도 무방 (이 수업에서는 설명하지 않은\n",
"방법임)\n",
"\n",
"`(4)` ’월-금’사이의 요일중 Python과 R의 합계학습량이 가장 큰 요일은 어느\n",
"요일인가?\n",
"\n",
"(풀이)"
],
"id": "72b4e168-3627-419e-a086-6279243c591c"
},
{
"cell_type": "code",
"execution_count": 190,
"metadata": {},
"outputs": [],
"source": [
"{s:df.loc[df.weekday == s,'hours(R)',].sum()+df.loc[df.weekday == s,'hours(Python)'].sum() for s in set(df.weekday)}"
],
"id": "1084cfd8-54b4-491e-85da-ab485dc5315e"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`(5)` R과 Python의 학습량 차이를 계산하고 (R-Python을 계산) maplotlib 을\n",
"이용하여 시각화하라.\n",
"\n",
"(풀이)"
],
"id": "4df324f5-a7a6-4226-8a79-0aa596f69990"
},
{
"cell_type": "code",
"execution_count": 177,
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"metadata": {},
"data": {
"image/png": "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\nSUVORK5CYII=\n"
}
}
],
"source": [
"y = df['hours(R)'] - df['hours(Python)']\n",
"plt.plot(y,'--o')"
],
"id": "8ff611b9-0dcd-41c8-96e4-552932be8834"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`(6)` R과 Python의 학습량 차이를 ${\\bf y}=(y_1,\\dots,y_n)$라고 할때,\n",
"아래와 같은 변환을 이용하여\n",
"$\\tilde{\\bf y}=({\\tilde{y}_1}, \\dots, {\\tilde{y}_n})$를 계산하라.\n",
"\n",
"- $\\tilde{y}_1= \\frac{1}{3}(2y_1 + y_2)$\n",
"- $\\tilde{y}_i= \\frac{1}{3}(y_{i-1}+y_i+y_{i+1})$, for\n",
" $i=2,3,\\dots,n-1$\n",
"- $\\tilde{y}_n= \\frac{1}{3}(y_{n-1}+2y_{n})$\n",
"\n",
"결과를 시각화하라.\n",
"\n",
"(풀이)"
],
"id": "001b8254-9d8b-4cbf-917c-4dcae49e1e73"
},
{
"cell_type": "code",
"execution_count": 196,
"metadata": {},
"outputs": [],
"source": [
"n = len(y)\n",
"M = np.array([abs(i-j)<2 for i in range(n) for j in range(n)]).reshape(n,n)/3\n",
"M[0,0] = 2/3\n",
"M[-1,-1] = 2/3 "
],
"id": "f7f330d3-4f07-4e6c-b0d2-41ae54951fca"
},
{
"cell_type": "code",
"execution_count": 209,
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"metadata": {},
"data": {
"image/png": "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\nYII=\n"
}
}
],
"source": [
"plt.plot(y,'--o',label=r'$y$=hours(R)-hours(Python)')\n",
"plt.plot(M@y,'--o',label=r'$M@y$:= smoothed $y$ = $\\tilde{y}$')\n",
"plt.legend()"
],
"id": "0d9734c1-4e01-45d9-92ea-b7bed97d77e8"
}
],
"nbformat": 4,
"nbformat_minor": 5,
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3 (ipykernel)",
"language": "python"
},
"language_info": {
"name": "python",
"codemirror_mode": {
"name": "ipython",
"version": "3"
},
"file_extension": ".py",
"mimetype": "text/x-python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.16"
}
}
}