import numpy as np
import pandas as pd
dataframe保存到csv
df.to_csv(path_or_buf,sep,na_rep,columns,header,index)
参数解析
-
path_or_buf:字符串,放文件名、相对路径、文件流等;
-
sep:字符串,分隔符,跟read_csv()的一个意思
-
na_rep:字符串,将NaN转换为特定值
-
columns:列表,指定哪些列写进去
-
header:默认header=0,如果没有表头,设置header=None,表示我没有表头呀!
-
index:关于索引的,默认True,写入索引
读取csv到dataframe
pd.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer', names=None, index_col=None,
usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None,
converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None,
nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True,
parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False,
iterator=False, chunksize=None, compression='infer', thousands=None, decimal=b'.', lineterminator=None, quotechar='"',
quoting=0, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=False, error_bad_lines=True,
warn_bad_lines=True, skipfooter=0, skip_footer=0, doublequote=True, delim_whitespace=False, as_recarray=False,
compact_ints=False, use_unsigned=False, low_memory=True, buffer_lines=None, memory_map=False, float_precision=None)
常用参数:
-
filepath_or_buffer:(这是唯一一个必须有的参数,其它都是按需求选用的),文件所在处的路径
-
sep:指定分隔符,默认为逗号’,’
-
delimiter : str, default None,定界符,备选分隔符(如果指定该参数,则sep参数失效)
-
header:int or list of ints, default ‘infer’,指定哪一行作为表头。默认设置为0(即第一行作为表头),如果没有表头的话,要修改参数,设置header=None
-
names:指定列的名称,用列表表示。一般我们没有表头,即header=None时,这个用来添加列名就很有用啦!
-
index_col:指定哪一列数据作为行索引,可以是一列,也可以多列。多列的话,会看到一个分层索引
-
prefix:给列名添加前缀。如prefix=“x”,会出来"x1"、“x2”、"x3"酱纸
-
nrows : int, default None,需要读取的行数(从文件头开始算起)
-
encoding:乱码的时候用这个就是了,官网文档看看用哪个:
-
skiprows : list-like or integer, default None,需要忽略的行数(从文件开始处算起),或需要跳过的行号列表(从0开始)
参考链接:pd.read_csv() 、to_csv() 之 常用参数
df1 = pd.DataFrame(np.random.randint(2,10,(6,3)),columns=list('XYZ'),index=list('ABCDEF'))
df1
X | Y | Z | |
---|---|---|---|
A | 5 | 5 | 2 |
B | 2 | 2 | 5 |
C | 9 | 4 | 9 |
D | 8 | 6 | 2 |
E | 9 | 3 | 6 |
F | 4 | 4 | 3 |
带index保存
df1.to_csv('df_test.csv',index=True)
# 默认读取时会新增index
df2 = pd.read_csv('df_test.csv')
df2.head()
Unnamed: 0 | X | Y | Z | |
---|---|---|---|---|
0 | A | 5 | 5 | 2 |
1 | B | 2 | 2 | 5 |
2 | C | 9 | 4 | 9 |
3 | D | 8 | 6 | 2 |
4 | E | 9 | 3 | 6 |
# 指定索引为那一列
df2 = pd.read_csv('df_test.csv',index_col=0)
df2.head()
X | Y | Z | |
---|---|---|---|
A | 5 | 5 | 2 |
B | 2 | 2 | 5 |
C | 9 | 4 | 9 |
D | 8 | 6 | 2 |
E | 9 | 3 | 6 |
不带index保存
df1.to_csv('df_test1.csv',index=False)
df2 = pd.read_csv('df_test1.csv')
df2.head()
X | Y | Z | |
---|---|---|---|
0 | 5 | 5 | 2 |
1 | 2 | 2 | 5 |
2 | 9 | 4 | 9 |
3 | 8 | 6 | 2 |
4 | 9 | 3 | 6 |
df2 = pd.read_csv('df_test1.csv',index_col=0)
df2.head()
Y | Z | |
---|---|---|
X | ||
5 | 5 | 2 |
2 | 2 | 5 |
9 | 4 | 9 |
8 | 6 | 2 |
9 | 3 | 6 |
parquet
train = pd.read_parquet(path+'train_fold_'+str(fold)+'.parquet')
isnull、isnan、isna的用法
np.isnan()多用于单个值的检验,pd.isnull()用于对一个DataFrame或Series(整体)的检验
df3 = pd.DataFrame(np.random.randint(2,10,(5,3)),columns=list('XYZ'),index=list('ABCDE'))
df3
X | Y | Z | |
---|---|---|---|
A | 9 | 6 | 7 |
B | 5 | 2 | 8 |
C | 3 | 9 | 2 |
D | 7 | 6 | 6 |
E | 6 | 6 | 9 |
df3.iloc[0,0] = np.nan
df3.iloc[3,0] = np.nan
df3.iloc[2,1] = np.nan
df3.iloc[4,1] = np.nan
df3
X | Y | Z | |
---|---|---|---|
A | NaN | 6.0 | 7 |
B | 5.0 | 2.0 | 8 |
C | 3.0 | NaN | 2 |
D | NaN | 6.0 | 6 |
E | 6.0 | NaN | 9 |
# np.isnan()多用于单个值的检验,pd.isnull()用于对一个DataFrame或Series(整体)的检验。
display (df3[df3['Y'].notnull()==False].head())
display (df3[df3['Y'].isnull()].head())
display (df3[df3['Y'].isna()].head())
display (df3[np.isnan(df3['Y'])].head())
display (df3[df3['Y'].isnan()].head()) # 会报错
X | Y | Z | |
---|---|---|---|
C | 3.0 | NaN | 2 |
E | 6.0 | NaN | 9 |
X | Y | Z | |
---|---|---|---|
C | 3.0 | NaN | 2 |
E | 6.0 | NaN | 9 |
X | Y | Z | |
---|---|---|---|
C | 3.0 | NaN | 2 |
E | 6.0 | NaN | 9 |
X | Y | Z | |
---|---|---|---|
C | 3.0 | NaN | 2 |
E | 6.0 | NaN | 9 |
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-15-d3370cf9107e> in <module>()
4 display (df3[df3['Y'].isna()].head())
5 display (df3[np.isnan(df3['Y'])].head())
----> 6 display (df3[df3['Y'].isnan()].head()) # 会报错
~\Anaconda3\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
4370 if self._info_axis._can_hold_identifiers_and_holds_name(name):
4371 return self[name]
-> 4372 return object.__getattribute__(self, name)
4373
4374 def __setattr__(self, name, value):
AttributeError: 'Series' object has no attribute 'isnan'