본문 바로가기

전체 글263

[pandas] csv 파일에서 따옴표 안의 콤마(,)는 seperator로 적용하고 싶지 않을 때 csv 파일에서 따옴표 안의 comma(,)는 seperator로 적용하고 싶지 않을 때 예 Issue,Content Test,"A, B" Test,"A, B, C" 위와 같은 csv 파일이 있을 때 Test 다음의 콤마(,)는 seperator로 적용하고 싶지만 "A,B"의 콤마는 seperator로 적용하고 싶지 않아서 따옴표(")에 묶여있다. 이때는 read_csv 함수의 quotechar인자를 사용하면 된다 예제코드 import io csvs = ''' Issue,Content Test,"A, B" Test,"A, B, C" ''' url = io.StringIO(csvs) csv 파일로 실습해야 하지만 문자열을 csv 파일처럼 읽게 해주는 StringIO 함수를 사용해서 마치 csv 파일의 ur.. 2023. 9. 5.
[python] 여러 개의 변수를 반복문으로 생성하는 방법 예제a = [1, 3, 4, 5, 6] 리스트 a를 이용해 인덱싱을 하면 값을 반환할 수 있다.  print(a[0])1  a[0] 뿐 아니라 a[1], a[2], a[3] 등등으로 다른 값도 불러올 수 있다.  이 때 a의 원소를 순서대로 다른 변수로 지정하려면 예를들어 a0 = 1, a1 = 3, ..., a[4] = 6 이렇게 변수를 동시에 생성하려면 globals 함수를 사용하면 된다 for i, data in enumerate(a): globals()['a{}'.format(i)] = data  확인해보자print(a0)1  a0라는 변수에 1이 지정된 것을 알 수 있다.  다만, 이 방법은 파이썬에서 권장되는 방식은 아니다. 각 배열의 값을 새로운 변수로 할당하지 않고 처음에 했던 a[0.. 2023. 9. 5.
[pandas] 날짜(timestamp)에서 특정 기간이 흐른 뒤의 날짜를 반환하는 방법 특정 기간이 흐른 뒤의 날짜를 반환하는 방법 예제1 import pandas as pd today = '2023-09-05' today_dt = pd.to_datetime(today) today_dt today는 2023-09-05의 날자를 뜻하는 문자열이고 today_dt는 2023-09-05를 datetime 자료형으로 바꾼 것이다 2023-09-05로 부터 4개월 뒤의 날짜를 datetime 자료형으로 반환해보자 이럴 때는 DateOffset 함수를 이용하면 손쉽게 가능하다 today_dt + pd.DateOffset(months=4) output: Timestamp('2024-01-05 00:00:00') 4개월 뒤인 2024-01-05에 해당하는 timestamp를 반환한다 15일 뒤의 날짜를 .. 2023. 9. 5.
집계 결과를 열로 만드는 방법 groupby + transform을 사용하면 집계 결과를 열로 만들 수 있다. 먼저 다음 예제 코드를 보자 import pandas as pd data = {'학생': ['김판다', '강승주', '조민영', '최진환', '박연준', '고준희'], '반': ['A', 'A', 'B', 'B', 'B', 'C'], '점수': [0, 100, 20, 40, 60, 30]} df = pd.DataFrame(data) 이 df를 활용해 그림처럼 소속반의 평균이 담긴 열을 만들어보자 예를 들어 A반의 학생은 첫번째 행의 김판다와 두번째 행의 강승주이다. 둘의 점수가 0점과 100점이니 A반의 평균은 50이 되고 A반 소속인 김판다와 강승주의 데이터는 반평균열에서 둘다 50이 된다 방법 groupby + trans.. 2023. 8. 30.
Timedelta 자료형을 실수(float)로 바꾸는 방법 판다스에서는 두 시점의 시간 차이를 Timedelta 자료형으로 나타낸다 다음 예를 보자 import pandas as pd date1 = pd.to_datetime('2023-01-02') date2 = pd.to_datetime('2023-03-10') date1 - date2 Timedelta('-67 days +00:00:00') 2023-01-02와 2023-03-10의 시간 차이는 '-67 days +00:00:00' 임을 의미한다 이것을 그냥 실수로 -67로 표현하고 싶을 때가 있을 것이다. 그때는 Timedelta로 표현된 1day로 나눠주면 된다 (date1 - date2) / pd.Timedelta('1 day') 결과: -67.0 손쉽게 실수(float)로 변환할 수 있다 유튜브에서 .. 2023. 8. 30.
[pandas] 영업일(business day)을 배열로 생성하는 방법 판다스에서 영업일(business day)을 배열로 생성하는 방법주말을 제외해 영업일 가져오기 판다스에서는 date_range 함수를 통해 날짜 배열을 얻을 수 있으며, 주기(freq)를 'B'로 지정하면 토요일과 일요일을 제외한 영업일을 얻을 수 있습니다. 다음 코드를 통해 2023-08-10부터 5개의 영업일을 추출해 보겠습니다.import pandas as pdpd.date_range('2023-08-10', periods=5, freq='B')DatetimeIndex(['2023-08-10', '2023-08-11', '2023-08-14', '2023-08-15', '2023-08-16'], dtype='datetime64[ns]', freq='B')  지정한 공휴일을 제.. 2023. 8. 28.