python 常用操作集锦

python 常用操作集锦

  • 1 pandas常用操作语句
    • 1.1 全部读取数据
    • 1.2 局部读取数据
    • 1.3 设置行、列索引
    • 1.n 导出数据

1 pandas常用操作语句

1.1 全部读取数据

  1. 读取.xlsx格式数据

语法格式:

pda.read_excel('filename',sheetname=k,header=None,usecols=读取列名的list列表, default Noneencoding=utf-8)

参数说明:
sheetname=k:表明该excel文件的第k个sheet表被取出,default = 0;
sep:分隔符,默认为tab
header = n:表明数据中是否存在列名default= 0。如果header = n,则第n行数据为列索引,如果在第0行,则第0行数据为列索引,如果header=None,则读取的原始文件数据没有列索引。
encoding:表示数据集的字符编码,通常而言一份数据为了⽅便的进⾏⽂件传输都以utf-8作为标准
skip_rows:跳过开头行
skip_footer:跳过结尾行数
useclos:指定读取那些列,比如usecols=[‘订单编号’,‘分类’]
典型范例:

yiwang=pd.read_excel(file_path_in+data3,sheet_name='百度圣卡',sep='\t',index_col=None,usecols=['订单编号','分类'])

index_col:指定列为行索引;比如指定第一列为索引,可以设置index_col=0,excel第一列没有列标题,默认是读成索引。
parse_dates:同read_table
na_value:指定原始数据中哪些特殊值填充缺失值
thousands:指定千位符
convert_float:默认将所有的数值型字段转化为浮点型字段。
converters:通过字典的形式,指定某些列需要转化的形式

  1. 读取.txt格式数据
    语法格式:
df= pd.read_table('tt.txt',sep = ',',comment='#',encoding = 'gbk',skiprows=2,skipfooter=3,thousands='&',parse_dates={'birthday':[0,1,2]})

参数说明:
read_table:读取txt文本文件
也可以用于读取csv文件,两者都是文本文件,一定程度上等同于read_csv(很多参数共用);
index_col:指定原数据集中的某些列作为数据框的行索引
dtype:读取数据时,可以为原数据的每个字典设置不同的数据类型。可以以字典表达。{‘a’: np.float64, ‘b’: np.int32}
converters:通过字典格式,为数据集中的某些字段设置转化函数。{0:str}第一列转化为字符串
skiprows:跳过开头行数
skipfooter:跳过原始数据末尾行数
df=pd.read_excel(’/C:Temp/People.xlsx’,header=None)
nrows:指定读取数据的行数
na_values:一组用于替换NA/NaN的值,scalar, str, list-like, or dict, default None 
skip_blank_lines:读取数据时是否需要跳过原数据集中的空白行,默认为True
parse_dates:如果参数为True,则尝试解析数据框的行索引;如果参数为列表,则尝试解析对应的日期列;如果参数为嵌套列表,则将某些列合并为日期列;如果参数为字典,则解析对应的列(字典中的值),并生成新的字段名(字典中的键)
**skipinitialspace **:boolean, default False;忽略分隔符后的空白(默认为False,即不忽略)
thousands:指定原始数据中的千位符
na_filter : boolean, default True;是否检查丢失值(空字符串或者是空值)。对于大文件来说数据集中没有空值,设定na_filter=False可以提升读取速度。
nrows:限制读取多少行。
error_bad_lines: boolean, default True;如果一行包含太多的列,那么默认不会返回DataFrame ,如果设置成false,那么会将改行剔除(只能在C解析器下使用)。
chunksize:指定文件块的大小,分块读取
iterator:为True时,返回可迭代对象
应用范例:

reader = pd.read_table('tmp.sv', sep='\t', iterator=True)
#通过get_chunk(size),返回一个size行的块  
#接着同样可以对df处理
df=reader.get_chunk(10000)

逐块读取示例:

df = open(r'\train.csv','r')
reader = pd.read_csv(df, iterator=True, nrows=20000000)
loop = True
chunkSize = 100
chunks = []
while loop:
  try:
      chunk = reader.get_chunk(chunkSize)
      chunks.append(chunk[chunk.is_attributed==1])
   #停止迭代,数据读到尾部,结束循环。
  except StopIteration:
      loop = False
      print("文件读取完毕.")
'''使用concat合并数据块,ignore_index=True表示忽略原始索引,重建索引。'''
  1. 读取.csv格式数据

语法格式:

pandas.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, skipfooter=0, 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, doublequote=True, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=None, error_bad_lines=True, warn_bad_lines=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)

参数说明:
**sep **:指定分隔符,取值类型:str, default ‘,’,即:逗号分隔。
delimiter :定界符,备选分隔符(如果指定该参数,则sep参数失效),取值类型:str, default None
header:指定哪一行数据作为列索引,取值类型:int or list of ints, default ‘infer’(即:header=0,取第一行数据作为列索引),如果header=None,则读取的原始文件数据没有列索引。
names:自定义列索引,取值类型:array-like, default None, 不可以与header=None同时出现,否则报错。
index_col :用作行索引的列编号或者列名,如果给定一个序列则有多个行索引。取值类型:int or sequence or False, default None
usecols :读取指定列,取值类型:array-like, default None
skipinitialspace:忽略分隔符后的空白,(默认为False,即不忽略) default False
skiprows :需要忽略的行数(从文件开始处算起),或需要跳过的行号列表(从0开始),取值类型:list-like or integer(即:采用一个数字列表来确定要跳过的行), default None
nrows :需要读取的行数(从文件头开始算起),取值类型:int, default None
na_values:一组用于替换NA/NaN的值,scalar, str, list-like, or dict, default None

keep_default_na:决定是否保留默认应该转换的缺失值列表, 取值类型:bool, default True。如果keep_default_na=False,同时指定na_values参数,则默认的NaN将被覆盖;若不定义na_values参数,则在读取文件时不将任何值转换为缺失值NaN。
skip_blank_lines:如果为True,则跳过空行;否则记为NaN。 boolean, default True
keep_date_col:boolean, default False
如果连接多列解析日期,则保持参与连接的列。默认为False。
date_parser:function, default None
用于解析日期的函数,默认使用dateutil.parser.parser来做转换。Pandas尝试使用三种不同的方式解析,如果遇到问题则使用下一种方式。
1.使用一个或者多个arrays(由parse_dates指定)作为参数;
2.连接指定多列字符串作为一个列作为参数;
3.每行调用一次date_parser函数来解析一个或者多个字符串(由parse_dates指定)作为参数。
encoding : 指定字符集类型,通常指定为’utf-8’,取值类型:str, default None

常见范例:

#用read_csv读取无列索引的csv文件
df=pd.read_csv(‘file_name.csv’, header=None)
#用read_csv读取自定义列索引的csv文件:
df=pd.read_csv(‘file_name.csv’, names=['a', 'b', 'c', 'd', 'message'])
#用read_csv读取指定列数据
pandas.read_csv(‘file_name.csv’, usecols = [0,1,2,3])
#用read_csv读取时,保持第一行0(作为列索引),然后跳到第10行
pd.read_csv(‘file_name.csv’, sep=’|’, skiprows=range(1, 10))
#用read_csv读取时,不将任何值转换为缺失值NaN
df = pd.read_csv(‘train.csv’, keep_default_na=False)

参考链接:https://blog.csdn.net/me_to_007/article/details/89818508

1.2 局部读取数据

  1. 需要取某些列数据

语法格式:

参数说明:

常见范例:
df1= df.ix[:,0:4] #读取df的前4列,全部行数据(取左闭右闭的区间)
df2= df.ix[:,5] #读取df的第6列,全部行数据(列索引从0开始)
 备注: pd.read_csv()函数,有"header=None", df.ix[:,0:4]就是左闭右闭的区间;没有"header=None", df.ix[:,0:4]就是左闭右开的区间

1.3 设置行、列索引

除了在读取数据时,直接用参数设置列索引外,还可以在读入数据后,再专门设置列索引,方法如下:

  1. 设置列索引
    people.columns=[‘ID’,‘Title’,‘FirstName’,‘MIddleName’,‘LastName’]

  2. 设置行索引
    people=people.set_index(‘ID’)

1.n 导出数据

to_csv:导出为csv文件
该方法也可以直接导出txt文件,txt同csv文件都是文本文件,很多地方使用方法是共通的。
写.xlsx或.csv文件时去掉索引

  1. 导出.xlsx格式数据
    people.to_excel(’/C:Temp/output.xlsx’)
    直接to_excel会被覆盖,借助ExcelWriter可以实现写多个sheet
    若df1要to_excel到excel_file的sheet1,同时df2要to_excel到excel_file的sheet2
    的实现方法

    writer = pd.ExcelWriter(‘file_path+file_name.xlsx’)
    df1.to_excel(writer, sheet_name=‘sheet1’)
    df2.to_excel(writer, sheet_name=‘sheet2’)
    writer.save()

  2. 导出.csv格式数据

#需要注意的一点是,导出csv文件,需要指定编码为'uft_8_sig,不然中文可能会乱码。'
DataFrame.to_csv(aa.csv, sep=',', na_rep='', columns=None, header=True, index=True, index_label=None, encoding=None, chunksize=None, tupleize_cols=None, date_format=None, doublequote=True, escapechar=None, decimal='.')

参数说明:
chunksize:int或者None,一次写入的行数
na_rep :默认空值填充
sep:分隔符
index=False:不保存索引
header=False:不需要表头,默认header=True
columns:list指定要导出的列
encoding:编码格式
float_format :浮点数格式字符串,取值范围:字符串,默认为 None
date_format :取值范围:字符串,默认为None ,字符串对象转换为日期时间对象
index_label:取值范围:字符串或序列,或False,默认为None,如果需要,可以使用索引列的列标签。如果没有给出,且标题和索引为True,则使用索引名称。如果数据文件使用多索引,则应该使用这个序列。如果值为False,不打印索引字段。在R中使用index_label=False 更容易导入索引。
tupleize_cols :取值范围:布尔值 ,默认为False,从版本0.21.0中删除:此参数将被删除,并且总是将多索引的每行写入CSV文件中的单独行 (如果值为false)将多索引列作为元组列表(如果TRUE)或以新的、扩展的格式写入,其中每个多索引列是CSV中的一行。

你可能感兴趣的:(数据分析-pandas,Jupyter,Notebook)