1. CSV파일 생성하기
Q. 학번, 학점을 기준으로 학번은 1~100000까지 sequential하게 하고 점수는 0~100의 값을 랜덤으로 작성하기
import random
data = {'학번': [i for i in range(1, 100001)],
'학점': [random.randint(0, 100) for _ in range(100000)]} #1
df = pd.DataFrame(data) #2
df.to_csv('my_file.csv', index=False, encoding='cp949') #3
#1 : 각 조건에 맞는 컬럼을 '학번', '학점'으로 생성하고 1~100000까지, 학점 0~100까지 100000번 반복하여 리스트 컴프리핸션을 이용해서 생성
random.randint(a, b)는 a와 b 사이의 정수에서 랜덤한 값을 뽑아줍니다.
#2 : DataFrame을 딕셔너리를 이용하여 생성
#3 : 생성된 DataFrame을 csv파일로 만드는 함수 .to_csv()
to_csv() 함수의 기본적인 사용법은 다음과 같습니다.
데이터프레임.to_csv('생성할csv파일이름', index=False, encoding='cp949')
index=False는 인덱스 생성을 하지 않겠다는 뜻입니다. 즉, 컬럼만 있게 됩니다. encoding='cp949'는 한글파일이 깨질 수도 있으니까 인코딩해주는 겁니다.
2. CSV 파일 불러오기
data = pd.read_csv("파일경로/파일이름.csv")
2-1. 가져온 파일 위의 5개만 출력하기
print(data.head())
3. 데이터 정렬 .sort_values()
정렬할 데이터 중 특정 컬럼을 기준으로 정렬하고 싶을때 사용 가능
df['컬럼명'].sort_values()
tmp = data['학점'].sort_values()
print(tmp)
컬럼명 학점을 기준으로 오름차순 정렬을 해줬습니다.
정렬의 기본값은 오름차순 정렬이며, 만일 결측치(NaN)이 있다면 그 값은 가장 마지막에 위치하게 됩니다.
문자열의 경우 오름차순은 한글은 ㄱ, ㄴ, ㄷ 순이며 영어의 경우 a, b, c 순이 됩니다.
3-1. ascending=False를 이용해 내림차순 정렬
tmp = data['학점'].sort_values(ascending=False)
print(tmp)
ascending=False를 이용해 내림차순으로 정렬하였습니다. 이 때도 마찬가지로 결측치가 있다면 맨 아래에 표시됩니다.
4. by를 이용한 정렬 기준 정하기
위에서 data['학점'].sort_values()는 특정 컬럼인 '학점'을 추출한 뒤, 그 값을 정렬하는데 반해
data.sort_values(by=['학점'])을 이용하면 데이터 프레임에 있는 값을 전체적으로 정렬한 것인데 그 때의 기준이 되는 컬럼이 매개변수에 넣은 컬럼이 됩니다.
df.sort_values(by=['원하는 컬럼명'])
4-1. 기준을 여러개 적용하기
df1.sort_values(by= ['컬럼1', '컬럼2'], ascending=[True, False])
위와 같이 적용하면 컬럼1을 기준으로 오름차순 정렬이 되고 기준이 같다면 컬럼2를 기준으로 내림차순 정렬을 해줍니다.
5. 통계량 계산하기
import pandas as pd
df = pd.DataFrame()
df['키'] = [170, 144, 156, 177, 181, 188, 175, 161]
df['체중'] = [60, 45, 77, 44, 90, 58, 71, 68]
df['키'].mean() # 평균
df['키'].median() # 중앙값 = df['키'].quantile(0.5)
df['키'].mode() # 최빈값
df['키'].std() # 표준 편차
df['키'].var() # 표본 분산
df['키'].sum() # 합계
df['키'].min() # 최소값
df['키'].max() # 최대값
df['키'].max()-df['키'].min() # 범위
df['키'].nunique() # 유니크한 원소 개수
df['키'].quantile(0.25) # 제 1 사분위수
df['키'].quantile(0.75) # 제 2 사분위수
df['키'].quantile(0.75) - df['키'].quantile(0.25) # 사분위 범위
df['키'].kurtosis() # 첨도
df['키'].skew() # 왜도
df['키'].cov(df['체중']) # 공분산
df['키'].corr(df['체중']) # 상관계수
'[머신러닝] > [Numpy, Pandas]' 카테고리의 다른 글
[Pandas] groupby 2.0 version 이후 (0) | 2023.10.25 |
---|---|
[Numpy] 넘파이 랜덤 함수 정리 (0) | 2023.08.30 |
[Pandas] CSV파일에 데이터 쓰기 (0) | 2023.06.21 |
[Pandas] 판다스 기초1 (0) | 2023.06.20 |
[Numpy] numpy.meshgrid함수 (0) | 2023.06.16 |