본문 바로가기
Computer Science/Error Code

[Data Science] IOPub data rate exceeded 에러

by Henry Cho 2022. 12. 30.
728x90

IOPub data rate exceeded 에러

포스트 난이도: HOO_Middle


# IOPub data rate exceeded

 

데이터를 읽는 데 있어서 pd.read.csv()를 했을 때, IOPub data rate exceeded라는 에러가 발생할 수 있다. 특히 클라우드 서버(Cloud server) 기반으로 코딩을 할 경우에 이러한 에러가 발생할 가능성이 높다.

 


IOPub data rate exceeded.
The notebook server will temporarily stop sending output
to the client in order to avoid crashing it.
To change this limit, set the config variable
`--NotebookApp.iopub_data_rate_limit`.

Current values:
NotebookApp.iopub_data_rate_limit=1000000.0 (bytes/sec)
NotebookApp.rate_limit_window=3.0 (secs)

위와 같은 IOPub data rate exceeded 에러가 발생하는 경우에는 크게 두 가지가 있다. 첫 번째는 우선 출력하려는 데이터가 많기 때문이다. 한마디로 읽으려고 하는데 데이터 양이 방대할 경우, 출력하는데 한계가 있다 보니 위와 같은 에러가 발생한다. 만약에 csv 파일 자체의 데이터가 방대해 보이지 않음에도 불구하고 위와 같은 에러가 발생한다면, 출력되는 데이터가 csv 파일에서 보이는 데이터와 다를 수 있다는 점도 고려해야 한다.

 

예를 들어서 csv파일에 있는 string 데이터만 출력되는 것이 아니라 공백을 포함한 모든 작성 형태마저도 string으로 출력이 될 경우에는 보이는 데이터보다 실제로 출력되는 데이터가 엄청나게 많아진다. 따라서 이러한 경우에는 개발자에게 있어서는 csv 파일에서 보이는 데이터가 많다고 생각이 들지 않더라도 실제로 출력되는 데이터가 너무 많기 때문에 위와 같은 에러가 발생할 수 있다.

 

두번째로는 print() 기능이 중복되어 위와 같은 에러가 발생할 수 있다. 이러한 경우에는 간단하게 print() 기능이 중복이 되지 않도록 코드 작성에서 빼주면 된다. 파이썬의 경우에는 print()를 하지 않더라도 자동으로 출력이 된다는 장점을 가지고 있는데 이 장점이 여기서는 에러를 발생하는 요인이 될 수 있다. 따라서 첫 번째 경우가 아니라도 print()를 제거해주면 위의 에러 없이 결과를 출력할 수 있다. 

 

아래는 IOPub data rate exceeded 에러에 대한 해결 방법에 대해서 다시 한번 언급해 두었다.


# csv 파일에서 출력되는 데이터 양을 조절한다.

 

첫 번째 문제와 같이 데이터 양이 방대해서 에러가 나타난 경우라면 출력되는 데이터 양을 조절하면 된다. 출력하려는 데이터 양이 많아서 에러가 발생했기 때문에 출력하려는 데이터 양을 조절하는 것 자체로 에러를 해결할 수 있다. 필요한 데이터만 출력하여 확인하면 되기 때문에 모든 데이터를 출력할 필요가 없다.


# print() function을 삭제해 준다.

 

아래의 예제 코드는 IOPub data rate exceeded가 발생한 경우이다.

import pandas as pd

df = pd.read_csv('국가어항+일반현황.csv', encoding= 'cp949')
print(df.to_string())

IOPub data rate exceeded.
The notebook server will temporarily stop sending output
to the client in order to avoid crashing it.
To change this limit, set the config variable
`--NotebookApp.iopub_data_rate_limit`.

Current values:
NotebookApp.iopub_data_rate_limit=1000000.0 (bytes/sec)
NotebookApp.rate_limit_window=3.0 (secs)

위와 같은 경우에는 print() function을 삭제해줌으로써 간단하게 문제가 해결될 수 있다. 하지만 to_string()으로 모든 작성 형태까지도 string으로 출력될 수는 있다.


import pandas as pd

df = pd.read_csv('국가어항+일반현황.csv', encoding= 'cp949')
df.to_string()

위와 같이 print()를 삭제해주면 문제없이 csv 파일의 데이터가 출력된다.


 

728x90

댓글