본문 바로가기
Data/Crawling

[2021.05.12] 인턴 +72 CSV 파일을 읽어오는 방법 (일부분 값 추출 방법도 포함)

by injekim97 2021. 5. 12.
반응형

[2021.05.12] 인턴 +72 CSV 파일을 읽어오는 방법 (일부분 값 추출 방법도 포함)

 

 

 

<저장된 CSV 파일을 읽어오는 방법>

import pandas as pd

# csv file loading
data  = pd.read_csv("C:\/python_file\/0512test_update_crawling.csv")
data # print문을 쓰면 못생기게 나옴, print문 생략할 것, 그리고 print문이 없을 땐 젤 마지막에 써야 값이 나옴

 

 

 

<실행결과>

 

 

 

자, 이제 인스타그램에서 크롤링해서 저장한 CSV 파일의 코드를 가져와서 필요한 부분을 추출해보자.

----------------------------------------------------------------------------------------------------------------

<소스코드>

# CSV 파일을 읽어온 후, 각 속성(닉네임,게시글 수,팔로워 수, 팔로잉 수를 저장하기 위한 함수 구현)

import pandas as pd


# -----------------------------CSV----------------------
# csv 파일의 값 중 닉네임 값 넣기 ---> OK 05.11.1820
# ★ for i in range(0,ㅁ,2): ㅁ 자리에, 엑셀파일을 열어서 행이 50이면 51을 적어줘야함. 행길이 적기

def csv_nickname_func():
    arr = []
       
    for i in range(0,8,2):
        arr.append(data['닉네임'][i])
    
    a = set(arr)
    
    # Nonetype -> list로 변경하기 위해 새로운 배열 리스트를 만들고
    # for 문으로 하나씩 추출하면서 새로운 배열에 저장해줌
    
    test = []
    for i in a :
        test.append(i)

    return test
        

    
# csv 파일의 값 중 게시글 수를 넣음 ----> OK 05.11 1820
def csv_notice_num_func():
    # csv 파일의 값 중 게시글 수를 넣어서, 빈 리스트에 전부다 대입
    test = []
    for i in range(0,8,2):
        try :
            csv_notice_num = int(data['게시글 수'][i])
            test.append(csv_notice_num)

            test = set(test)  # set을 이용하여 중복제거 
            test = list(test) # 인덱스 기능을 사용하기 위해 set -> list로 변환 

        except :
            pass
    
    return test



# csv 파일의 값 중 팔로워 수를 넣음 -----> OK 05.11.1820
def csv_followers_func():
    # csv 파일의 값 중 닉네임 수를 넣어서, 빈 리스트에 전부다 대입
    arr = []
    for i in range(0,8,2):
        try :
            csv_followers = data['팔로워 수'][i]
            csv_followers = csv_followers.replace(".0","") # "35000.0" -> "35000"
            csv_followers = int(csv_followers) # "35000" -> 35000
            arr.append(csv_followers)

            arr = set(arr)  # set을 이용하여 중복제거 
            arr = list(arr) # 인덱스 기능을 사용하기 위해 set -> list로 변환 

        except :
            pass
    return arr



    
# csv 파일의 값 중 팔로잉 수를 넣음  -------> OK 05.11 . 1820
def csv_followings_func():
    test = []
    for i in range(0,8,2):
        test.append(data['팔로잉 수'][i])
    
    # 중복 제거
    test = set(test)
        
    # "1.119" -> 1119 로 제거
    a = [int(x.replace(',', '')) for x in test]
    return a


 
# csv 파일의 값 중 팔로잉 수를 넣음  -------> OK 05.11 . 1820
def dashboard_func():
    test = []
    for i in range(0,8,2):
        test.append(data['대쉬보드 내용'][i])
    
    a = set(test)
    
    # Nonetype -> list로 변경하기 위해 새로운 배열 리스트를 만들고
    # for 문으로 하나씩 추출하면서 새로운 배열에 저장해줌
    # Nonetype이 생기는 이유를 정확히 알음
    # ★★★★★★--> 같은 변수명에 대입하지말고, 항상 새로운 변수에 대입 해 줄것 ★★★★★★
    arr = []
    for i in a :
        arr.append(i)
    return arr        
        
        

# csv file loading 
# skiprows = 2 로 앞에 csv 파일에 저장된 기본 인플루엔서 정보(닉네임,게시글 수 ,팔로워 수,팔로잉수, 대쉬보드내용 생략함)
# 왜냐하면 이 row들은 5행이지만, post 나 video_post를 다루는 컬럼은 8행이기때문임. 그래서 맞춰줘야하는데 생략으로 pass 
data  = pd.read_csv("C:\/python_file\/20210512_153547_instargram.csv")


nickname = csv_nickname_func()
notice = csv_notice_num_func()
followers = csv_followers_func()
followings = csv_followings_func()
dashboard = dashboard_func()


# 첫 row에 있는, 닉네임, 게시글 수 , 팔로워 수, 팔로잉 수, 대쉬보드 내용과 비교하기 위해 인덱스로 첫 row행 데이터를 추출함
data_nickname = data['닉네임'][0]
data_notice = data['게시글 수'][0]
data_followers = data['팔로워 수'][0]
data_followings = data['팔로잉 수'][0]
data_dashboard = data['대쉬보드 내용'][0]

yesterday_dashboard = []
yesterday_dashboard.append(data_nickname)
yesterday_dashboard.append(data_notice)
yesterday_dashboard.append(data_followers)
yesterday_dashboard.append(data_followings)
yesterday_dashboard.append(data_dashboard)

print("\n###CSV 파일에 저장된 대쉬보드 값 출력###")
print(yesterday_dashboard)
print(data)

 

CSV 파일을 읽어오는 방법 (일부분 값 추출 방법도 포함).ipynb
0.01MB

---------------------------------------------------------------------------------------------------------------

<실행결과>

-> 위의 코드가 바로 필요한 부분을 인덱싱 해서, 저장 후 출력한 모습

-> 형광색은 csv 파일을 그냥 읽어온 것

 

----------------------------------------------------------------------------------------------------

* CSV 파일을 읽어와서 필요한 컬럼의 값을 추출하는 방법은?

 data['컬럼'][원하는 값 인덱스]  ★

import pandas as pd


# csv file loading
data  = pd.read_csv("C:\/python_file\/20210512_153547_instargram.csv")


* 아래의 코드는 이해를 돕기위해 가져옴 *
data_nickname = data['닉네임'][0]
data_notice = data['게시글 수'][0]
data_followers = data['팔로워 수'][0]
data_followings = data['팔로잉 수'][0]
data_dashboard = data['대쉬보드 내용'][0]

 

 

 

--------------------------------------------------------------------------------------------------

* 해당 크롤링 파일을 실행하기 위해선? 

1. 0512_1500 3_post 최종구현.ipynb 파일을 jupyter로 열음

-> 인플루언서의 정보 및 게시글3(답글,좋아요수,좋아요 누른사람) 등등 CSV로 변환

 

2. 0512_1500 [최종] - CSV 파일을 읽어와서 내용 비교.ipynb 파일을 jupyter로 열음

* 코드가 2개로 나눠져있는데,  위의 코드가 csv 파일 읽어오기

2-1. csv 파일을 읽어오는 path 부분을 1번에서 저장했던.CSV로 지정

2-2. 그런후에 실행하면 CSV 파일을 읽어옴

 

* 밑에코드가 csv 파일과 오늘 인플루언서 정보 비교하기임

3.->2번을 실행 후, 그런다음에 실행

반응형

댓글