반응형
pandas란?
- 데이터 분석을 위한 파이썬 라이브러리
- 행과 열로 이루어진 데이터 구조를 다룬다.
- Series 와 Dataframe 자료구조를 사용한다.
Dataframe 생성
import pandas as pd
#테스트 데이터 dict 생성
data_exam = {
'name':['a','b','c','d','e'],
'height':[160,170,180,185,190],
'age':[23,15,18,19,25],
'class':['A','B','A','B','A']
}
.
#pandas dataframe
df=pd.DataFrame(data_exam)
#read from csv file
df=pandas.read_csv(filepath,names=cols,header=None,encoding="cp949")
#Dataframe()으로 호출하면 안되니까 타이핑에 주의하자
df.index
df.columns
df.dtypes
Dataframe 다루기
> 특정 컬럼 조회
df['id']
> 특정 복수 컬럼 조회.
df[['id','age']]
> where 절 조건 조회
df[('id'>10)] # ID 10이상만 조회
df.where(filter1 & filter2, inplace = True)
>컬럼 이름 변경
df.rename(columns={'oldName':'newName'},inplace=True)
>Dataframe convert to tuple
tmp = df['id']
mytuple = [x for x in tmp.to_numpy()]
> 컬럭 삭제
df = df.drop(['컬럼이름','col2'],axis=1)
df.dropna(subset=['컬럼이름'],inplace=True)
> 데이터 컬럼 값 변경
df['Gender'].replace('male',1) # Gender 컬럼의 male 값을 1로 대체
df.loc[df['Gender']=='male','Gender']=1
> 특정 컬럼이 널값인 경우 조회
df[df['컬럼1'].isnull()]
> where, query
dt.where(dt.컬럼명1 == 'value').count()['id']
dt.query('컬럼명1 == "value" | 컬럼명2 > 5').count()
> Group By
dt.groupby('class') #집계할 컬럼
.agg({'height':['count','mean']}) #집계 함수를 적용
.sort_values([('height','mean')]) # 정렬
#agg 에 컬럼 이름을 주면 multiIndex로 생성되는데 () set 형태로 컬럼 이름이 생성된다.
dt.groupby('컬럼이름').size() 그룹별 카운트
> merge
merge_view=view.merge(user,on='uid').merge(product,on='pid')
merge_view=view.merge(user,on='uid').merge(product,on='pid',how='outer')
Parquet 파일을 Pandas DataFrame 으로 로드하기
rom fastparquet import ParquetFile
# 만약 압축을 풀어야 한다면
import snappy
def snappy_decompress(data, uncompressed_size):
return snappy.decompress(data)
pf = ParquetFile('sample.snappy.parquet') # filename includes .snappy.parquet extension
df=pf.to_pandas()
pf = ParquetFile('/Users/amore/178309483_20220714_0000_000000000000.parquet')
## 2
df=pd.read_parquet('/Users/amore/appsflyer.snappy.parquet')
df.head()
print(df.head())
MySQL 테이블로부터 Pandas DataFrame 으로 로드하기
from sqlalchemy import create_engine
import pandas as pd
import pymysql
db_conn_str = 'mysql+pymysql://User:비밀번호@DB호스트'
mysql_conn = create_engine(db_conn_str)
data = pd.read_sql_table('BOT_USER',mysql_conn)
반응형
'Data Engineer' 카테고리의 다른 글
파이썬 데일리코딩 - 운영 수준의 작성 습관(1) (1) | 2024.11.12 |
---|---|
파이썬 데일리코딩 - dict_get, swap (2) | 2024.11.01 |
python - 데코레이터와 데이터클래스 (0) | 2024.06.28 |
다르게 생각해보기 -1 (1) | 2024.06.08 |
redis(레디스) 기초와 빠르게 구성하기 (0) | 2024.03.29 |