목록파이썬 (53)
개발은 처음이라 개발새발
하나의 열이 여러가지 정보를 가지고 잇을 때 각 정보를 서로 분리해서 사용하는 경우가 있는데요. 그중에서 대표적인 것이 날짜 정보겠죠. 예를 들어 날짜라는 컬럼 안에 "2022-08-20" 이라는 정보가 담겨 있다면 날짜라는 컬럼에 연도, 월, 일 총 3가지의 정보가 담겨 있는 것입니다. 이름 같은 경우도 성과 이름을 모두 담고 있기 때문에 좀 더 데이터를 세분화해 다루기 위해서는 이를 분리해 구분하는 것이 좋습니다. 이번 시간에는 주가데이터 예제를 통해서 코딩을 진행해보겠습니다. import pandas as pd #데이터셋 가져오기 df = pd.read_excel('./주가데이터.xlsx') print(df.head(),'\n') print(df.dtypes,'\n') #연,월,일 데이터 분리하기 ..
데이터프레임의 열에 isin()매소드를 적용하면 특정 값을 가진 행들을 따로 추출할 수 있습니다. 이때 isin() 매소드 안에는 데이터프레임에서 추출하려는 값들을 리스트로 해서 입력하면 됩니다. 그렇다면 바로 예제를 통해 풀어보도록 하겠습니다. 먼저 비교를 위해 boolean indexing을 먼저 적어보도록 하겠습니다. import seaborn as sns titanic = sns.load_dataset('titanic') #함께 탑승한 형제 또는 배우자의 수가 3, 4, 5인 승객만 추출 - 불린 인덱싱 mask3 = titanic['sibsp'] == 3 mask4 = titanic['sibsp'] == 4 mask5 = titanic['sibsp'] == 5 df_boolean = titani..
파이썬을 통해서도 엑셀과 같이 필터링이 가능한대요. 오늘 다뤄볼 것은 특정 조건식을 작성해 이를 만족하는 값들만 뽑아낼 수 있는 불린 인덱싱(boolean indexing)에 대해 알아보겠습니다. 불린(boolean)은 시리즈 객체에 어떤 조건식을 적용하면 참(True), 거짓(False)인지를 판별하는 것인데요. 이를 토대로 참인 값들만 필터링 하는 것이 불린 인덱싱입니다. 오늘도 seaborn의 'titanic'예제를 활용해 불린 인덱싱을 하는 과정을 살펴보겠습니다. import seaborn as sns titanic = sns.load_dataset('titanic') # 10대 승객 찾기 mask1 = (titanic['age'] >= 10) & (titanic['age'] = 60 ) df_u..
안녕하세요, 이번에는 판다스에서 열의 순서를 변경하는 것에 대해 알아보도록하겠습니다. 이번 시간 예제는 seaborn에서 제공하는 타이타닉 데이터를 가지고 진행하겠습니다. 우선적으로 컬럼을 순서를 변경하는 데 있어 필요한 것은 컬럼의 리스트를 만드는 것입니다.그렇다면 컬럼 리스트를 만드는 것까지 코딩을 진행해보겠습니다. import seaborn as sns titanic = sns.load_dataset('titanic') df = titanic.loc[0:4,'survived':'age'] print(df,'\n') #컬럼 리스트 만들기 columns = list(df.columns) print(columns,'\n') survived pclass sex age 0 0 3 male 22.0 1 1 1..
이번 시간엔는 timestamp와 period를 가지고 인덱스로 활용하는 방법에 대해서 알아보겠습니다. 두가지를 인덱스로 활용하게 되면 기간별로 데이터를 분석하는 데 있어 굉장히 용이하겠죠? 기간별로 데이터를 분류하고 분석하는 것은 어찌보면 데이터분석에 있어 가장 많이 활용되고 기본적인 것이니 알아둔다면 도움이 많이 될 것으로 보입니다. 그렇다면 바로 코딩을 살펴보겠습니다. 인덱스로 지정하는 것은 그동안 많이 사용된 df.set_index()함수를 활용하면 됩니다. import pandas as pd df = pd.read_csv('stock-data.csv') #Date 타입 변경 df['new_date'] = pd.to_datetime(df['Date']) df.set_index('new_date',..
앞서 소개해드린 timestamp와 poried배열을 소개해드렸는데요. 이를 토대로 날짜 데이터를 분리해보도록하겠습니다. 예제는 주식 거래 데이터를 활용해보겠습니다. import pandas as pd df = pd.read_csv('stock-data.csv') print(df.head(),'\n') print(df.info(),'\n') Date Close Start High Low Volume 0 2018-07-02 10100 10850 10900 10000 137977 1 2018-06-29 10700 10550 10900 9990 170253 2 2018-06-28 10400 10900 10950 10150 155769 3 2018-06-27 10900 10800 11050 10500 13354..
판다스에서는 date_range()함수를 사용하면 여러 개의 날짜가 들어 있는 시계열 데이터를 만들 수 있다고 합니다. 이를 Timestamp 배열이라고 하는데요. 이밖에도 기간을 설정하는 Period 배열이 있습니다. 예제들을 통해 한번 어떻게 활용할 수 있는지 알아보도록 하겠습니다. 1.월 시작일 timestamp 배열 import pandas as pd ts_ms = pd.date_range(start='2022-01-01', #날짜 범위 시작 end= None, #날짜 범위 끝 periods= 6, #생성할 Timestamp 개수 freq = 'MS', #시간 간격(MS: 월의 시작일) tz='Asia/Seoul') #시간대(timezone) print(ts_ms,'\n') DatetimeInde..
지난 편에서는 21/22시즌 그라운드와 공중볼 경합 탑10을 확인해봤는데요. 이어서 지난 시즌 가장 많은 경기당 크로스 성공 개수와 그 선수들의 크로스 성공%를 한번 확인해보도록하겠습니다. #총 크로스 횟수가 50회 이상인 선수만 추리기 df2 = df1[df1['totalCross'] > 50].sort_values(by=['totalCross'], ascending=False) print(df2) #경기당 크로스 성공 개수 계산 df2['per_game_cross'] = round(df2['accurateCross'] / df2['game'],2) # 크로스 성공% 계산 df2['cross%'] = round((df2['accurateCross'] /df2['totalCross'])*100,2) #2..
오랜만입니다. 오늘은 데이터분석에서 가장 중요한 정규화 작업에 대해 알아보도록하겠습니다. 정규화는 여러 열의 데이터가 들어 있을 때 모든 열의 데이터의 단위가 동일하면 더할나위 없이 좋지만 저희에겐 그런 행운은 없기에 단위가 서로 다른 열을 가지고 머신러닝을 하게 되면 머신러닝 분서 결과가 달라질 수 있습니다. 그렇기에 숫자 데이터간의 상대적인 크기 차이를 제거해 각 열에 속하는 데이터 값을 동일한 크기 기준으로 나눈 비율로 나타내는데 이를 두고 정규화(normalization)이라고 합니다. 정규화를 거친 데이터의 범위는 0~1 또는 -1~1이 됩니다. 정규화 작업중 기본적인 방법으로는 해당 열의 데이터를 열의 최대값의 절대값으로 나누는 방법이 있습니다. 이렇게 되면 가장 큰 값은 자기 자신과 나눈 것..
안녕하세요. 이제 22/23 PL 개막이 5일 정도 남았는데요. D-5 기념으로 지난 시즌 프리미어리그 득점순위 탑 5 선수들의 경기당 주요 공격 지표에 대해 알아보겠습니다. 제목은 리그 Top 5 득점자들의 경기당 주요 공격지표로 하겠습니다. 근데 이제 파이썬을 곁들인... 늘 그랬듯이 활용한 스탯은 모두 fotmob 사이트(https://www.fotmob.com/)를 통해 모았습니다. 우선 잘 모은 데이터를 한번 확인해보겠습니다. 데이터를 불러오죠. import pandas as pd import numpy as np df= pd.read_excel('epl.xlsx',sheet_name='Sheet1') print(df) print('\n') league season team name assist..