How to read CSV file in Pandas


Reading CSV file in Pandas is pretty simple. Here is how you do it. Check out also how to read excel using pandas.

import pandas as pd
df = pd.read_csv('/root/test.csv')

If you run in to following error, it means you need to set the correct delimiter or your data has different encoding

ParserError: Error tokenizing data. C error: Buffer overflow caught - possible malformed input file.

For my file the delimiter is tab, so lets try again...

df = pd.read_csv('/root/test.csv', ',delimiter='\t')
ParserError: Error tokenizing data. C error: Buffer overflow caught - possible malformed input file.

As we see above, I still got the above error. So we need to fix the encoding.

There is a python library chardet which can help us find the correct encoding. Lets import that and use it find the encoding...

import chardet
with open('/root/test.csv','rb') as f:
  rawdata = b''.join([f.readline() for _ in range(20)])
  print(chardet.detect(rawdata)['encoding'])
UTF-16

Ok the encoding is UTF-16, lets read the csv file again using UTF-16 now...

df = pd.read_csv('/root/test.csv', encoding='UTF-16',delimiter='\t')
len(df)
6384

It worked now.