Pandas CSV大数据处理

显示所有列

pd.set_option('display.max_columns', None)

读取csv文件,设置 nrows=100 读取前100行数据

df = pd.read_csv('recently_static.csv', low_memory=False, nrows=100)

low_memory : boolean, default True
分块加载到内存,再低内存消耗中解析。但是可能出现类型混淆。确保类型不被混淆需要设置为False。或者使用dtype 参数指定类型。注意使用chunksize 或者iterator 参数分块读入会将整个文件读入到一个Dataframe,而忽略类型(只能在C解析器中有效)

分块处理 chunksize

想使用分块处理,只需在read_csv()方法中加入chunksize=100000(这里假设每一块有100000行)

df=pd.read_csv('data.csv',header=None,chunksize=100000)

然后使用for循环去每块每块地去处理(chunk的type是DataFrame):

for chunk in df:
    print(chunk)

筛选某一列数据长度为9的所有数据

df = pd.read_csv('tablename.csv', low_memory=False, dtype=str)
df = df[df['col_name'].str.len() == 9]

dtype=str 这个设置有必要

去重

df.drop_duplicates(subset='mmsi', keep='first', inplace=True)

筛选并删除

df.drop(df[df['mmsi'].str.len() != 9].index, inplace=True)

df[df['mmsi'].str.len() != 9]是筛选条件
df[df['mmsi'].str.len() != 9].index获取索引

保存

df.to_csv('test.csv', index=False)

创建一个空的DataFrame

df = pd.DataFrame([])

创建一个带有列名的DataFrame

title=['mmsi' ,'statictime' ,'imo_no']
df = pd.DataFrame(columns=title)
df.to_csv('test.csv', index=False)

CSV写入追加模式,并且不带表头

df.to_csv('test.csv', mode='a', index=False, header=None)

获取列名

df = pd.read_csv('title.csv')
cols_name=[column for column in df]

大数据给pandas提速可以使用modin

我当前使用的是WIN10系统,由于不然使用依赖库ray;
所以就不做测试了
modin的使用可参考:
https://www.jianshu.com/p/5f6b7019e5a1

你可能感兴趣的:(Pandas CSV大数据处理)