수업(국비지원)/Python

[Python] csv파일, 엑셀 파일 pandas 모듈로 읽기

byeolsub 2023. 4. 25. 11:28
  • csv파일을 pandas 모듈로 읽기

📌

# jeju1.csv 파일을 pandas 모듈을 이용하여 읽기
import pandas as pd
# read_csv : jeju1.csv 파일을 읽어서 DataFrame 객체로 생성
df = pd.read_csv("data/jeju1.csv")
df.info() # 간략한 정보
df.head() # 처음 다섯개만 조회
df.tail() # 마지막 다섯개만 조회
df

# 장소만 조회
df.장소
df["장소"]
df[["장소"]]

# 위도와 경도 정보
df[["LON","LAT"]]

df.index
# set_index : 장소 컬럼을 인덱스로 변경하기
df.set_index("장소",inplace=True)
df

# 돔베돈의 경도,위도 조회
df.loc["돔베돈"] # Series 객체
df.loc[["돔베돈"]] # DataFrame 객체

df.index
# 인덱스 값을 여행지 컬럼으로 추가
# 컬럼 추가  : dataframe[새로운 컬럼명] = 값
# 컬럼 수정 : dataframe[기존컬럼명] = 값
df["여행지"] = df.index
df
df.info()

# reset_index : 현재의 index 값을 다시 컬럼으로 변경
df.reset_index(inplace=True)
df
df.index

# 장소컬럼을 제거하기
df.drop("장소",axis=1,inplace=True)
df

# df 데이터의 내용을 csv 파일로 저장하기
# to_csv("파일이름",index = )
# index = True : index도 데이터로 저장. 기본값
# index = False : index는 파일에 저장 안함. index는 저장 안함.    
df.to_csv("data/df_jeju.csv",index=False) # index 저장 안함.

 


  • 엑셀파일 pandas 모듈로 읽기
'''
 df[[컬럼,...]] => 컬럼 조회
 df[:] => 범위를 지정. row 조회함.
'''
df.info()
df["Part Number":"Cost"] # row로 인식. 오류
df[:1] # data.loc와 비슷?
df[:1,:1] # 오류
df.iloc[:1,:1] # 정상

 

📌

# pandas를 이용하여 엑셀파일 읽기
# excel 파일 읽기
'''
read_excel("파일이름","sheet이름","인덱스 컬럼")
("data/sales_2015.xlsx","january_2015",index_col=None)
 => data/sales_2015.xlsx 파일에서 january_2015 sheet 데이터 읽기. 
    인덱스 컬럼 설정 안함.
'''
# 한개의 sheet 읽는 방법
df = pd.read_excel("data/sales_2015.xlsx","january_2015",index_col=None)
df
type(df) # DataFrame
df.info()

# 모든 sheet 읽기
# sheet_name=None : sheet이름 지정 안함. 모든 sheet를 읽음.
df = pd.read_excel("data/sales_2015.xlsx",sheet_name=None,index_col=None)
df
type(df) # 결과 -> dict. 딕셔너리 데이터.
'''
{"sheet이름: dataframe 데이터,..."}
'''
for name,data in df.items() :
    print("sheet 이름:",name)
    print("data의 자료형:",type(data))
type(data) # DataFrame
data.info()

data
# Sale Amount 컬럼의 값이 500보다 큰 레코드만 조회
data[data["Sale Amount"] > 500]
data.loc[data["Sale Amount"] > 500]

data["Sale Amount"] > 500 # 결과 - True, False 로 도출
data[[False,True,False,True,False,True]]
# => data중에 레코드의 값이 True인 데이터만 조회

# 500보다 큰 레코드만 df500 데이터에 저장
df500 = data[data["Sale Amount"] > 500]
df500 # DataFrame 객체

# df500데이터를 pd_sale_2015.xlsx 파일의 2015_500 sheet로 저장하기
# 내용 없는 엑셀파일 pd_sale_2015.xksx 생성함
outexcel = pd.ExcelWriter("data/pd_sale_2015.xlsx")
# df500 데이터의 내용을 outexcel 파일의 2015_500 sheet이름으로 
# 인덱스 제외하고 저장
df500.to_excel(outexcel,sheet_name="2015_500",index=False)
data.to_excel(outexcel,sheet_name="2015",index=False)
outexcel.save() # 완성. 엑셀파일로 저장. 

# 매입일자가 2015-03-17일인 정보만 조회
df0317 = data[data["Purchase Date"] == "2015-03-17"]
df0317