python - pandas 之 dataframe - pandas options & input & output

目录

一、pandas常用options

1.Pandas option api 目录

2.set_option显示output所有行列

二、创建series 与 dataframe

1.Series创建方式

(1)使用数组生成   

(2)使用字典生成

(3)使用列表生成

2.Dataframe创建方式

(1)使用数组生成

(2)使用字典生成

(3)使用list生成

3.创建空series或空dataframe

三、pandas文件读写

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

8.to_excel输出excel


一、pandas常用options

1.Pandas option api 目录

pandas.describe_option
pandas.reset_option
pandas.get_option
pandas.set_option
pandas.option_context

2.set_option显示output所有行列

import pandas as pd
#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#设置value的显示长度为100,默认为50
pd.set_option('max_colwidth',100)
其他设置方式:
pd.set_option('display.max_rows', 100)
pd.set_option('display.max_columns', 1000)
pd.set_option("display.max_colwidth",1000) 
pd.set_option('display.width',1000)


 

二、创建series 与 dataframe

1.Series创建方式

(1)使用数组生成   

import numpy as np

arr1 = np.arange(10)

s1 = pd.Series(arr1,index=range(10))

(2)使用字典生成

#使用一个字典生成Series,其中字典的键,就是索引

dict1={'a':1, 'b':2, 'c':3}

s3 = pd.Series(dict1)

(3)使用列表生成

import pandas as pd

s1 = pd.Series([1, 2, 3, 4])

s2 = pd.Series([1, 2, 3, 4],index=range(4))

s3 = pd.Series([1, 2, 3, 4],index=range(0,8,2))

2.Dataframe创建方式

(1)使用数组生成

arr2 = np.array(np.arange(12)).reshape(4,3)

df1 = pd.DataFrame(arr2,columns=('a','b','c'))

(2)使用字典生成

1)字典列表方式 

dict2 = {'a':[1,2,3,4],'b':[5,6,7,8],'c':[9,10,11,12],'d':[13,14,15,16]}

df2 = pd.DataFrame(dict2)

#输出结果:

a b c d

0 1 5 9 13

1 2 6 10 14

2 3 7 11 15

3 4 8 12 16

2)嵌套字典方式

dic3 = {'one':{'a':1,'b':2,'c':3,'d':4},'two':{'a':5,'b':6,'c':7,'d':8},'three':{'a':9,'b':10,'c':11,'d':12}}

df3 = pd.DataFrame(dic3)

#输出结果:

one three two

a 1 9 5

b 2 10 6

c 3 11 7

d 4 12 8

(3)使用list生成

import pandas as pd

list1=[[1, 2, 3, 4], [5, 6, 7, 8]]

df=pd.DataFrame(list1,index=('a','b'))

3.创建空series或空dataframe

df=pd.DataFrame() 

s = pd.Series()

三、pandas文件读写

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='#')

8.to_excel输出excel

语法

DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None)

参数

  • excel_writer : 字符串或ExcelWriter 对象 文件路径或现有的ExcelWriter
  • sheet_name :字符串,默认“Sheet1” 将包含DataFrame的表的名称。
  • na_rep : 字符串,默认‘ ’ 缺失数据表示方式
  • float_format : 字符串,默认None 格式化浮点数的字符串
  • columns : 序列,可选 要编写的列
  • header : 布尔或字符串列表,默认为Ture。 写出列名。如果给定字符串列表,则假定它是列名称的别名。
  • index :布尔,默认的Ture 写行名(索引)
  • index_label : 字符串或序列,默认为None。 如果需要,可以使用索引列的列标签。如果没有给出,标题和索引为true,则使用索引名称。如果数据文件使用多索引,则需使用序列。
  • startrow : 左上角的单元格行来转储数据框
  • startcol : 左上角的单元格列转储数据帧
  • engine : 字符串,默认没有 使用写引擎 - 您也可以通过选项io.excel.xlsx.writer,io.excel.xls.writer和io.excel.xlsm.writer进行设置。
  • merge_cells : 布尔,默认为Ture 编码生成的excel文件。 只有xlwt需要,其他编写者本地支持unicode。
  • inf_rep : 字符串,默认“正” 无穷大的表示(在Excel中不存在无穷大的本地表示)
  • freeze_panes : 整数的元组(长度2),默认为None。 指定要冻结的基于1的最底部行和最右边的列

案例

basestation ="F://python/data/test.xls" basestation_end ="F://python/data/test_end.xls" data = pd.read_excel(basestation)

data.to_excel(basestation_end,header=["a","b","c","d"])

data.to_excel(basestation_end,header=False,columns=["ID"])

data.to_excel(basestation_end,index=False)

data.to_excel(basestation_end,sheet_name="sheet2")



#Create, write to and save a workbook:

>>> df1 = pd.DataFrame([['a', 'b'], ['c', 'd']],index=['row 1', 'row 2'],columns=['col 1', 'col 2'])

>>> df1.to_excel("output.xlsx") # doctest: +SKIP

#To specify the sheet name:

>>> df1.to_excel("output.xlsx",sheet_name='Sheet_name_1') # doctest: +SKIP

>>> df2 = df1.copy()

>>> with pd.ExcelWriter('output.xlsx') as writer: # doctest: +SKIP

df1.to_excel(writer, sheet_name='Sheet_name_1')

df2.to_excel(writer, sheet_name='Sheet_name_2')

>>> df1.to_excel('output1.xlsx', engine='xlsxwriter')

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值