-
读取csv文件到Dataframe中
1. 读取一般普通的csv
df=pd.read_csv('data.csv',sep='\t',header=0,names=['col1', 'col2'],dtype={'col1':"str", 'col2':"int64"})
header=0:不读取原来的列名
names=['col1', 'col2']:按照位置顺序,重新给列命名
dtype={'col1':"str", 'col2':"int64"}:按照dict语法,给列指定类型,如果有nan值可能会报错,需要再配合na_values, keep_default_na, na_filter等3个参数对na进行处理
2. 分块读取大型csv
df_table=pd.read_csv('data.csv',header=None,sep='\t',chunksize=100000)
for df in df_table:
pass
3. 迭代读取特定size的csv
df_iter=pd.read_csv('data.csv', sep='\t', iterator=True)
while True:
try:
df = df_iter.get_chunk(10000)
pass
except StopIteration:
break
4. 读取特定行数用于测试
df=pd.read_csv('data.csv', sep='\t', nrows=10)
5. 读取特定列
df=pd.read_csv('data.csv', sep='\t', usecols = [0,1,2,3])
usecols=[0,1,2,3]: 按照位置顺序,指定要读取的列
-
创建Dataframe
1. 创建指定列的空Dataframe
df=pd.Dataframe(columns=["col1", "col2"])
2. 创建带数据的Dataframe
df=pd.Dataframe({"col1":[1,2,3], "col2":['a','b','c']})
-
处理空值
1. 整体替换
df.fillna("", inplace=True)
2. 替换某列
df.fillna({'column':"", inplace=True}
TODO
numpy : y = np.where(np.isnan(x), None, x)
pandas: df1 = df.where((pd.notnull(df)), None)