●CSV예제 파일을 다운받아 주세요
**입력하는 코드 파일과 같은 폴더에 위치해 있어야 합니다**
▶ csv 파일을 읽고 리스트로 저장
import csv
f = open('population_age_2020.csv','r',encoding='utf-8')
lines = csv.reader(f)
header = next(lines)
data=[]
for line in lines:
data.append(line)
#population_age_2020.csv 파일을 읽어들여 2차원 리스트에 저장
print(data)
f.close()
[['서울', '9736962', '658355', '813563', '1455903', '1505729', '1563968', '1539385', '1200518', '688818', '263939', '40404', '6380'], ['부산', '3410925', '241624', '281120', '434692', '431911', '518321', '580966', '511174', '285602', '109312', '14396', '1807'], ['대구', '2432883', '186623', '234528', '321487', '303397', '391997', '428622', '311274', '171217', '74227', '8817', '694'], ['인천', '2954955', '239941', '281097', '405835', '417708', '490716', '515758', '344843', '172269', '74306', '11574', '908'], ['광주', '1456121', '125396', '162728', '207554', '191432', '244903', '234048', '155056', '91020', '38050', '5529', '405'], ['대전', '1473125', '120476', '151861', '212143', '199106', '242381', '243526', '170291', '88289', '39190', '5523', '339'], ['울산', '1145710', '103399', '115623', '147745', '158271', '190698', '211255', '136520', '57438', '21610', '2991', '160'], ['세종', '343788', '47454', '40574', '36273', '61442', '65714', '42907', '27813', '13609', '6863', '1084', '55'], ['경기도', '13265377', '1178548', '1347854', '1769080', '1917785', '2299179', '2205106', '1422638', '742296', '330231', '48650', '4010'], ['강원도', '1539521', '108694', '141975', '179813', '169694', '227950', '269666', '226444', '135668', '68321', '10493', '803'], ['충청북도', '1598599', '128290', '153119', '198910', '198768', '243982', '273857', '209926', '119037', '63513', '8656', '541'], ['충청남도', '2120995', '179808', '206578', '243748', '276553', '329789', '340568', '264305', '167339', '97941', '13481', '885'], ['전라북도', '1815112', '135297', '180675', '212339', '195971', '274471', '303074', '244901', '165445', '89352', '12770', '817'], ['전라남도', '1861894', '137868', '172888', '202760', '193083', '265366', '317226', '259385', '191719', '105793', '14984', '822'], ['경상북도', '2658956', '198214', '233506', '291097', '303472', '390995', '464427', '389498', '238482', '130716', '17589', '960'], ['경상남도', '3358828', '282751', '331566', '384750', '418383', '543911', '585186', '435315', '240111', '119977', '16139', '739'], ['제주도', '670876', '62086', '71539', '81968', '84145', '113076', '111221', '75172', '44621', '22963', '3819', '266']]
▶ csv 파일을 읽고 리스트로 저장한뒤 열과 행을 바꾸기
import csv
f = open('population_age_2020.csv','r',encoding='utf-8')
lines = csv.reader(f)
header = next(lines)
data=[]
for line in lines:
data.append(line)
new_list = list(map(list, zip(*data)))
print(new_list)
f.close()
[['서울', '부산', '대구', '인천', '광주', '대전', '울산', '세종', '경기도', '강원도', '충청북도', '충청남도', '전라북도', '전라남도', '경상북도', '경상남도', '제주도'], ['9736962', '3410925', '2432883', '2954955', '1456121', '1473125', '1145710', '343788', '13265377', '1539521', '1598599', '2120995', '1815112', '1861894', '2658956', '3358828', '670876'], ['658355', '241624', '186623', '239941', '125396', '120476', '103399', '47454', '1178548', '108694', '128290', '179808', '135297', '137868', '198214', '282751', '62086'], ['813563', '281120', '234528', '281097', '162728', '151861', '115623', '40574', '1347854', '141975', '153119', '206578', '180675', '172888', '233506', '331566', '71539'], ['1455903', '434692', '321487', '405835', '207554', '212143', '147745', '36273', '1769080', '179813', '198910', '243748', '212339', '202760', '291097', '384750', '81968'], ['1505729', '431911', '303397', '417708', '191432', '199106', '158271', '61442', '1917785', '169694', '198768', '276553', '195971', '193083', '303472', '418383', '84145'], ['1563968', '518321', '391997', '490716', '244903', '242381', '190698', '65714', '2299179', '227950', '243982', '329789', '274471', '265366', '390995', '543911', '113076'], ['1539385', '580966', '428622', '515758', '234048', '243526', '211255', '42907', '2205106', '269666', '273857', '340568', '303074', '317226', '464427', '585186', '111221'], ['1200518', '511174', '311274', '344843', '155056', '170291', '136520', '27813', '1422638', '226444', '209926', '264305', '244901', '259385', '389498', '435315', '75172'], ['688818', '285602', '171217', '172269', '91020', '88289', '57438', '13609', '742296', '135668', '119037', '167339', '165445', '191719', '238482', '240111', '44621'], ['263939', '109312', '74227', '74306', '38050', '39190', '21610', '6863', '330231', '68321', '63513', '97941', '89352', '105793', '130716', '119977', '22963'], ['40404', '14396', '8817', '11574', '5529', '5523', '2991', '1084', '48650', '10493', '8656', '13481', '12770', '14984', '17589', '16139', '3819'], ['6380', '1807', '694', '908', '405', '339', '160', '55', '4010', '803', '541', '885', '817', '822', '960', '739', '266']]
▶ csv 파일을 딕셔너리 데이터 형으로 변환
import csv
f = open('population_age_2020.csv', 'r', encoding='utf-8')
lines = csv.reader(f)
header = next(lines)
list_tmp = []
for line in lines :
# CSV 버퍼의 내용을 리스트에 저장
list_tmp.append(line[:])
list_data = []
for j in range(13) :
# 리스트의 행과 열을 변경
tmp = []
for i in range(len(list_tmp)) :
if j==0 :
tmp.append(list_tmp[i][j])
else :
tmp.append(int(list_tmp[i][j]))
list_data.append(tmp)
dict_data = {}
dict_data.update({header[0]:list_data[0]})
for i in range(1, len(list_data)) :
dict_data.update({header[i]:list_data[i]})
print(dict_data)
f.close()
{'지역': ['서울', '부산', '대구', '인천', '광주', '대전', '울산', '세종', '경기도', '강원도', '충청북도', '충청남도', '전라북도', '전라남도', '경상북도', '경상남도', '제주도'], '총인구수': [9736962, 3410925, 2432883, 2954955, 1456121, 1473125, 1145710, 343788, 13265377, 1539521, 1598599, 2120995, 1815112, 1861894, 2658956, 3358828, 670876], '0~9세': [658355, 241624, 186623, 239941, 125396, 120476, 103399, 47454, 1178548, 108694, 128290, 179808, 135297, 137868, 198214, 282751, 62086], '10~19세': [813563, 281120, 234528, 281097, 162728, 151861, 115623, 40574, 1347854, 141975, 153119, 206578, 180675, 172888, 233506, 331566, 71539], '20~29세': [1455903, 434692, 321487, 405835, 207554, 212143, 147745, 36273, 1769080, 179813, 198910, 243748, 212339, 202760, 291097, 384750, 81968], '30~39세': [1505729, 431911, 303397, 417708, 191432, 199106, 158271, 61442, 1917785, 169694, 198768, 276553, 195971, 193083, 303472, 418383, 84145], '40~49세': [1563968, 518321, 391997, 490716, 244903, 242381, 190698, 65714, 2299179, 227950, 243982, 329789, 274471, 265366, 390995, 543911, 113076], '50~59세': [1539385, 580966, 428622, 515758, 234048, 243526, 211255, 42907, 2205106, 269666, 273857, 340568, 303074, 317226, 464427, 585186, 111221], '60~69세': [1200518, 511174, 311274, 344843, 155056, 170291, 136520, 27813, 1422638, 226444, 209926, 264305, 244901, 259385, 389498, 435315, 75172], '70~79세': [688818, 285602, 171217, 172269, 91020, 88289, 57438, 13609, 742296, 135668, 119037, 167339, 165445, 191719, 238482, 240111, 44621], '80~89세': [263939, 109312, 74227, 74306, 38050, 39190, 21610, 6863, 330231, 68321, 63513, 97941, 89352, 105793, 130716, 119977, 22963], '90~99세': [40404, 14396, 8817, 11574, 5529, 5523, 2991, 1084, 48650, 10493, 8656, 13481, 12770, 14984, 17589, 16139, 3819], '100세 이상': [6380, 1807, 694, 908, 405, 339, 160, 55, 4010, 803, 541, 885, 817, 822, 960, 739, 266]}
▶ csv 파일을 DataFrame으로 저장
import csv
import pandas as pd
f = open('population_age_2020.csv', 'r', encoding='utf-8')
lines = csv.reader(f)
header = next(lines)
list_tmp = []
for line in lines :
# CSV 버퍼의 내용을 리스트에 저장
list_tmp.append(line[:])
f.close()
list_data = []
for j in range(13) :
# 리스트의 행과 열을 변경
tmp = []
for i in range(len(list_tmp)) :
if j==0 :
tmp.append(list_tmp[i][j])
else :
tmp.append(int(list_tmp[i][j]))
list_data.append(tmp)
dict_data = {}
for i in range(len(list_data)) :
dict_data.update({header[i]:list_data[i]})
frame = pd.DataFrame(dict_data)
frame2 = frame.iloc[:, [0, 1, 8, 9, 10, 11, 12]]
print(frame2)
지역 총인구수 60~69세 70~79세 80~89세 90~99세 100세 이상
0 서울 9736962 1200518 688818 263939 40404 6380
1 부산 3410925 511174 285602 109312 14396 1807
2 대구 2432883 311274 171217 74227 8817 694
3 인천 2954955 344843 172269 74306 11574 908
4 광주 1456121 155056 91020 38050 5529 405
5 대전 1473125 170291 88289 39190 5523 339
6 울산 1145710 136520 57438 21610 2991 160
7 세종 343788 27813 13609 6863 1084 55
8 경기도 13265377 1422638 742296 330231 48650 4010
9 강원도 1539521 226444 135668 68321 10493 803
10 충청북도 1598599 209926 119037 63513 8656 541
11 충청남도 2120995 264305 167339 97941 13481 885
12 전라북도 1815112 244901 165445 89352 12770 817
13 전라남도 1861894 259385 191719 105793 14984 822
14 경상북도 2658956 389498 238482 130716 17589 960
15 경상남도 3358828 435315 240111 119977 16139 739
16 제주도 670876 75172 44621 22963 3819 266
▶ csv 파일을 DataFrame으로 저장한뒤 특정열을 기준으로 내림차순 정렬하기
import csv
import pandas as pd
f = open('population_age_2020.csv', 'r', encoding='utf-8')
lines = csv.reader(f)
header = next(lines)
list_tmp = []
for line in lines :
# CSV 버퍼의 내용을 리스트에 저장
list_tmp.append(line[:])
f.close()
list_data = []
for j in range(13) :
# 리스트의 행과 열을 변경
tmp = []
for i in range(len(list_tmp)) :
if j==0 :
tmp.append(list_tmp[i][j])
else :
tmp.append(int(list_tmp[i][j]))
list_data.append(tmp)
dict_data = {}
for i in range(len(list_data)) :
dict_data.update({header[i]:list_data[i]})
frame = pd.DataFrame(dict_data)
rank = frame.sort_values(by=['100세 이상'], ascending=False)
rank = rank.reset_index(drop=True)
rank_100 = rank.iloc[:,[0, 12, 1]]
print(rank_100)
지역 100세 이상 총인구수
0 서울 6380 9736962
1 경기도 4010 13265377
2 부산 1807 3410925
3 경상북도 960 2658956
4 인천 908 2954955
5 충청남도 885 2120995
6 전라남도 822 1861894
7 전라북도 817 1815112
8 강원도 803 1539521
9 경상남도 739 3358828
10 대구 694 2432883
11 충청북도 541 1598599
12 광주 405 1456121
13 대전 339 1473125
14 제주도 266 670876
15 울산 160 1145710
16 세종 55 343788
출처: 예제 중심 파이썬 입문
궁금한 부분이 있으면 댓글 부탁드립니다^^
'• programming language > python' 카테고리의 다른 글
[파이썬 실력 테스트] 2. 사칙연산 (0) | 2022.08.16 |
---|---|
[파이썬 실력 테스트] 1. print() (0) | 2022.08.16 |
[파이썬 예제] Pandas 9- DataFrame 인구 통계 데이터 파일 분석,시각화 (0) | 2022.08.01 |
[파이썬 개념] Pandas 8- DataFrame으로 합계와 평균 구하기 (0) | 2022.08.01 |
[파이썬 개념] Pandas 7- DataFrame 요소 추출( loc, iloc) (0) | 2022.08.01 |