Pandas: Input/Output 常用API

目录

1.Pandas Input/Output API目录

2.read_csv读取csv/txt

3.read_table读取csv/txt

4.to_csv输入csv 或 txt

5.read_sql读取数据库

6.to_sql存入数据库

7.read_excel读取excel


1.Pandas Input/Output API目录

2.read_csv读取csv/txt

(1)常用案例

  • import pandas as pd
  • data = pd.read_csv(file_path, header=0, index_col=False, low_memory=False)
  • data=pd.read_csv(file,header=0,index_col=False,error_bad_lines=False,low_memory=False)
  • data=pd.read_csv('D:/project/python_instruct/test_data3.csv', index_col=['key1', 'key2'])
  • data = pd.read_csv(file_path, header=0, skiprows=[0, 1, 2, 3, 4, 5, 6])
  • data = pd.read_csv(seo_file,header=0, index_col=False,error_bad_lines=False,low_memory=False)
  • data = pd.read_csv(file_path, header=0, skiprows=[0, 1, 2, 3, 4, 5,6], index_col=False, low_memory=False)

(2)常用参数

  • sep=','                      指定逗号为字段分隔符
  • escapechar=‘\\’         指定反斜杠为转义符
  • quotechar=‘"’             指定双引号为字段引用符
  • header=0或None 指定第几行数据为表头
  • names=['c1','c2'] 在header=None下指定列名
  • index_col 用作行索引的列编号或者列名,如果给定一个序列则有多个行索引。
  • dtype 每列数据的数据类型
  • skiprows 需要忽略的行数,或需要跳过的行号列表(0为首行)
  • nrows 需要读取的行数
  • na_values 一组用于替换NA/NaN的值

3.read_table读取csv/txt

read_table 与 read_csv 语法参数都相同,参考 read_csv

4.to_csv输入csv 或 txt

(1)语法:

DataFrame.to_csv(path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, mode='w', encoding=None, compression='infer', quoting=None, quotechar='"', line_terminator=None, chunksize=None, tupleize_cols=None, date_format=None, doublequote=True, escapechar=None, decimal='.')

(2)常用案例

  • import pandas as pd
  • file='/home/ubuntu/seo/res/res_juvo_amzseo_20200815.csv'
  • data.to_csv(file,header=True,index=False,encoding='utf-8')
  • #使用\t分隔,不写默认是逗号
  • dt.to_csv('C:/Users/Result.csv',sep='\t')
  • #空值保存为NA,不写默认是空
  • dt.to_csv('C:/Users/think/Desktop/Result1.csv',na_rep='NA')
  • #保留两位小数
  • dt.to_csv('C:/Users/think/Desktop/Result1.csv',float_format='%.2f')
  • #导出指定列
  • dt.to_csv('C:/Users/think/Desktop/Result.csv',columns=['name'])
  • #保留行索引
  • dt.to_csv('C:/Users/think/Desktop/Result1.csv',index=True)

(3)常用参数

  • sep=‘,’                        指定逗号为字段分隔符
  • escapechar=‘\\’          指定反斜杠为转义符
  • quotechar=‘"’              指定双引号为字段引用符
  • quoting=0                   指定0(QUOTE_MINIMAL) 表示最小量用双引号括起来,若字段内有逗号会括起来,1(QUOTE_ALL)全部括起来,2(QUOTE_NONNUMERIC)只括非数值字段(若字段dtype为浮点数也会括起来),3(QUOTE_NONE)全部不括
  • doublequote=False      指定为True时,且指定quotechar=‘"’和quoting=0,则如 ab\”cd 导出会变成 ab""cd , 若为False,ab\”cd 导出还是ab\”cd

5.read_sql读取数据库

read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)

  • sql:指sql语句
  • con: 指数据库connection
  • index_col:读取数据后dataframe的索引,默认为None,可指定数据库表的一行或多行作为索引
  • coerce_float:试图将值转换为非字符串,将非数值对象转为浮点
  • columns:筛选表中需要的列,以列表方式指定
  • chunksize:输入为int类型,如果指定,返回一个迭代器,'ChunkSize'是在每个块中包含的行数,若指定chunksize=3,则每块有3行数据

import pymysql

import pandas as pd

db=pymysql.connect(host="192.111.1.211",port=3306,user="xxxx",passwd="ffdd",db="xxxx",charset="utf8")

sql = "select * from tmp_hlq_098fdf where department='HC'"

df = pd.read_sql(sql,con=db)

#采用表单字段值作为dataframe索引

df = pd.read_sql(sql,db_mysl,index_col="purchase_date")

#采用表多字段作为dataframe索引

df = pd.read_sql(sql,db_mysl,index_col=(['department','purchase_date']))

数据表转为dataframe架构

import pandas as pd

import pymysql

con = pymysql.connect(host='192.1111.0.10', user='lwn', passwd='dddddd', db='ddd', port = 3306)

cur = con.cursor()

cur.execute(sql)

data = cur.fetchall()

#转为dataframe

df = pd.DataFrame(list(data))

con.commit()

cur.close()

6.to_sql存入数据库

语法:

DataFrame.to_sql(name, con, schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None, method=None)

参数:

  • if_exists:如果表存在的处理方式 fail:取消存储 ,replace:替换 ,append:附加到旧表
  • index:是否将行标签存储入SQL表
  • index_label:如果存储行标签

案例

import pymysql

import pandas as pd

db=pymysql.connect(xxxx)

df.to_sql(name='table1', con=engine, if_exists='append', schema='test', index=False)

7.read_excel读取excel

语法:

pandas.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, parse_cols=None, usecols=None, squeeze=False, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, verbose=False, parse_dates=False, date_parser=None, thousands=None, comment=None, skip_footer=0, skipfooter=0, convert_float=True, mangle_dupe_cols=True, **kwds)

参数说明:

  • io :excel 路径;
  • sheet_name:默认是sheetname为0,返回多表使用sheetname=[0,1],若sheetname=None是返回全表 。
  • header :指定作为列名的行,默认0,即取第一行,数据为列名行以下的数据;若数据不含列名,则设定 header = None;
  • skiprows:省略指定行数的数据
  • skipfooter:省略从尾部数的行数据
  • index_col :指定列为索引列,也可以使用 u’string’
  • names:指定列的名字,传入一个list数据
  • true_values : list,默认无,要视为True的值。
  • false_values : list,默认无,要考虑为False的值。
  • skiprows : list-like,行开头跳过(0索引)。
  • nrows : int,默认无,要解析的行数。
  • na_values : 标量,str,list-like或dict,默认无,要识别为NA / NaN的其他字符串。
  • keep_default_na : bool,默认为True
  • #如果指定了na_values且keep_default_na为False,则会覆盖默认的NaN值,否则它们将被附加到。
  • skip_footer : int,默认值为0
  • # skipfooter的别名。从版本0.23.0开始不推荐使用:改用skipfooter。
  • skipfooter : int,默认值为0
  • # 最后的行跳过(0索引)。
  • convert_float : bool,默认为True
  • # 将整数浮点数转换为整数(即​​1.0 - > 1)。如果为False,则所有数字数据都将作为浮点数读入:Excel将所有数字存储为内部浮点数。
  • mangle_dupe_cols : bool,默认为True
  • # 重复的列将被指定为'X','X.1', 'X.N',而不是'X' 'X'。如果列中存在重复的名称,则传入False将导致数据被覆盖。

案例:

import pandas as pd

pd.read_excel('/rfqDict.xlsx',sheet_name=0,header = 0,skipfooter= 1,index_col=False)

pd.read_excel('tmp.xlsx', index_col=0)

pd.read_excel(open('tmp.xlsx', 'rb'),sheet_name='Sheet3')

pd.read_excel('tmp.xlsx', index_col=None, header=None)

#推断了列类型,但可以明确指定

pd.read_excel('tmp.xlsx', index_col=0,dtype={'Name': str, 'Value': float})

#指定定义为NaN的值

pd.read_excel('tmp.xlsx', index_col=0,na_values=['string1', 'string2'])

#可以使用comment 跳过excel输入文件中的注释行

pd.read_excel('tmp.xlsx', index_col=0, comment='#')

猜你喜欢

转载自blog.csdn.net/helunqu2017/article/details/111876081
今日推荐