目录
1.Pandas Input/Output API目录
- pandas.read_pickle
- pandas.read_table
- pandas.read_csv
- pandas.read_fwf
- pandas.read_clipboard
- pandas.read_excel
- pandas.ExcelFile.parse
- pandas.ExcelWriter
- pandas.read_json
- pandas.json_normalize
- pandas.io.json.build_table_schema
- pandas.read_html
- pandas.read_hdf
- pandas.HDFStore.put
- pandas.HDFStore.append
- pandas.HDFStore.get
- pandas.HDFStore.select
- pandas.HDFStore.info
- pandas.HDFStore.keys
- pandas.HDFStore.groups
- pandas.HDFStore.walk
- pandas.read_feather
- pandas.read_parquet
- pandas.read_orc
- pandas.read_sas
- pandas.read_spss
- pandas.read_sql_table
- pandas.read_sql_query
- pandas.read_sql
- pandas.read_gbq
- pandas.read_stata
- pandas.io.stata.StataReader.data_label
- pandas.io.stata.StataReader.value_labels
- pandas.io.stata.StataReader.variable_labels
- pandas.io.stata.StataWriter.write_file
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='#')