전공공부/인공지능
Pandas 4편 : pivot table, join, DB persistence
prefer_all
2022. 7. 25. 16:21
<목차>
1. pivot table
- crosstab
2. merge
3. join
- inner join
- full(outer) join
- left join
- right join
4. concat
5. DB persistence
- XLS persistence
- pickle persistence
pivot table
- Index 축은 groupby와 동일
- Column에 추가로 labeling값을 추가하여 Value에 numeric type값을 aggregation 하는 형태
df_phone.head()
crosstab
- 두 칼럼에 교차 빈도, 비율, 덧셈 등을 구할 때 사용
- Pivot table의 특수한 형태
- User-Item Rating Matrix 등을 만들 때 사용 가능
#pivot table이었다면
df_movie.pivot_table(['rating'], index = df_movie.critic, columns = df_movie.title,
aggfunc = "sum", fill_value = 0)
merge pd.merge(df_a, df_b, on = ' ' , how = ' ')
- SQL에서 많이 사용하는 Merge와 같은 기능
- 두개의 데이터를 하나로 합침
raw_data = {
'subject_id': ['1', '2', '3', '4', '5', '7', '8', '9', '10', '11'],
'test_score': [51, 15, 15, 61, 16, 14, 15, 1, 61, 16]}
df_a = pd.DataFrame(raw_data, columns = ['subject_id', 'test_score'])
raw_data = {
'subject_id': ['4', '5', '6', '7', '8'],
'first_name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'last_name': ['Bonder', 'Black', 'Balwner', 'Brice', 'Btisan']}
df_b = pd.DataFrame(raw_data, columns = ['subject_id', 'first_name', 'last_name'])
pd.merge(df_a, df_b, on='subject_id')
#subject_id를 기준으로 merge
pd.merge(df_a, df_b, left_on = 'subject_id', right_on 'subject_id')
#두 dataframe의 column 이름이 다를 때
- join method
concat
- 같은 형태의 데이터를 붙이는 연산작업
df_new = pd.concat([df_a, df_b])
df_new.reset_index()
df_a.append(df_b)
df_new = pd.concat([df_a, df_b], axis=1)
df_new.reset_index()
DB persistence
- data loading시 db connection 기능을 제공
#Database 연결 코드
import sqlite3
conn = sqlite3.connect("./data/flights.db")
cr = conn.cursor()
cur.execute("select *from airlines limit 5;")
results = cur.fetchall()
results
#DB 연결 conn을 사용하여 dataframe 생성
df_airlines = pd.read_sql_query("select *from airlines;", conn)
XLS persistence
- Dataframe의 엑셀 추출 코드
- Xls 엔진으로 openpyxls 또는 XlsxWrite 사용
- conda install openpyxl
- conda install XlsxWriter
writer = pd.ExcelWriter('./data/df_routes.xlsx', engine='xlsxwriter')
df_routes.to_excel(writer, sheet_name='Sheet1')
Pickle persistence
가장 일반적인 python 파일 persistence
df_routes.to_pickle("./data/df_routes.pickle")