国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python之Pandas的常用技能【寫入數(shù)據(jù)】

這篇具有很好參考價值的文章主要介紹了Python之Pandas的常用技能【寫入數(shù)據(jù)】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、背景:

最近在工作中遇到越來越多的的使用pandas或者python來處里寫入操作,尤其是對excel文件或者csv文件的操作更是常見,這里將寫入操作總結(jié)如下,方便記憶,也分享給大家,希望對閱讀者能夠有所幫助

2、pandas寫入數(shù)據(jù)的各種場景使用詳解

2.1、df.to_excel()參數(shù)詳解

df.to_excel(
excel_writer, #存放excel文件的地址。如果是只寫文件名,不寫具體的地址也可。會和py文件存放到一起。
sheet_name='Sheet1', #sheet的名字。一般默認(rèn)為sheet1
na_rep='', #缺失值表示方式,一般默認(rèn)為''。
float_format=None, #格式化浮點數(shù)的字符串。
columns=None, #要寫入excel中的列。list。一般默認(rèn)None,即全部寫入。
header=True, #header即列名是否為columns,一般默認(rèn)為True。
index=True, #index是否寫入excel,一般默認(rèn)為True。
index_label=None, #要寫入excel中的index列。
startrow=0, #從哪一行開始寫入數(shù)據(jù)。默認(rèn)為0,即第一行。
startcol=0, #從哪一列開始寫入數(shù)據(jù)。默認(rèn)為0,即第一列。
engine=None, #可選參數(shù), 用于寫入要使用的引擎, openpyxl或xlsxwriter
merge_cells=True, #返回布爾值, 其默認(rèn)值為True。它將MultiIndex和Hierarchical行寫為合并的單元格。
encoding=_NoDefault.no_default, #默認(rèn)為'utf-8'
inf_rep='inf', #可選參數(shù), 默認(rèn)值為inf。它通常表示無窮大。
verbose=_NoDefault.no_default, #它的默認(rèn)值為True。返回布爾值。它用于在錯誤日志中顯示更多信息。
freeze_panes=None, #整數(shù)的元組(長度2),默認(rèn)為None??蛇x參數(shù), 用于指定要凍結(jié)的最底部一行和最右邊一列。
storage_options=None#
)

2.2 寫入一個sheet表中

【注:要寫入的excel和sheet已存在,則會覆蓋】

import pandas as pd
#創(chuàng)建一個數(shù)據(jù)
df = pd.DataFrame({
    'name':['Lily','Jack','Rose','Joe'],
    'age':[23,23,33,45],
    'job':['student','doctor','worker','lawyer']
},index=range(1,5),
)
#將index重新命名為id
df.index.name='id'
# print(df)
#寫入excel
df.to_excel(r'C:\Users\XXXXXX\Desktop\pandas寫入excel.xlsx',index=True,columns=['name','age'],header=True,startrow=20)

用pandas向表格中指定的行和列寫入數(shù)據(jù),pandas,python,數(shù)據(jù)分析

用pandas向表格中指定的行和列寫入數(shù)據(jù),pandas,python,數(shù)據(jù)分析

3 同一個excel中寫入多個sheet,sheet名不同

3.1?利用pd.ExcelWriter()寫入多個sheet中

pd.ExcelWriter(
path, #寫入的excel的存放路徑
engine=None, #一般默認(rèn)為io.excel.<extension>.writer,用于編寫的引擎。(目前這個參數(shù)不大懂。)
date_format=None, #設(shè)置寫入excel的日期格式。如"YYYY-MM-DD"
datetime_format=None, #設(shè)置寫入excel的日期時間格式。如"YYYY-MM-DD HH:MM:SS"
mode='w', #{"w","a"},一般默認(rèn)為"w"。使用文件的模式,是追加還是寫入。
**engine_kwargs
)

3.2 利用pd.ExcelWriter()寫入多個sheet中

import pandas as pd
from pandas import ExcelWriter
#創(chuàng)建一個數(shù)據(jù)

df = pd.DataFrame({
    'name':['Lily','Jack','Rose','Joe'],
    'age':[23,23,33,45],
    'job':['student','doctor','worker','lawyer']
},index=range(1,5),
)
#將index重新命名為id
df.index.name='id'
# print(df)

#設(shè)置存入路徑
with ExcelWriter(r'C:\Users\XXXXXX\Desktop\pandas寫入excel.xlsx',mode='w') as writer:
    for i in ['sheet_1','sheet_2','sheet_3']:
        df.to_excel(writer,sheet_name=i)
    writer.save()

用pandas向表格中指定的行和列寫入數(shù)據(jù),pandas,python,數(shù)據(jù)分析

3.3 在原來的sheet中追加幾個sheet表。(即不能覆蓋原來的數(shù)據(jù))

import pandas as pd
from pandas import ExcelWriter
#創(chuàng)建一個數(shù)據(jù)

df = pd.DataFrame({
    'name':['Lily','Jack','Rose','Joe'],
    'age':[23,23,33,45],
    'job':['student','doctor','worker','lawyer']
},index=range(1,5),
)
#將index重新命名為id
df.index.name='id'
# print(df)

#設(shè)置存入路徑,設(shè)置引擎,這是使用文件的模式。
with ExcelWriter(r'C:\Users\XXXXXX\Desktop\pandas寫入excel.xlsx',engine='openpyxl',mode='a') as writer:
    for i in ['sheet_4','sheet_5','sheet_6']:
        df.to_excel(writer,sheet_name=i)
    writer.save()

用pandas向表格中指定的行和列寫入數(shù)據(jù),pandas,python,數(shù)據(jù)分析

4 在同一個excel,同一個sheet表中追加數(shù)據(jù)

【注:這里有兩種思路

1)先讀取原表,將現(xiàn)有數(shù)據(jù)與原表數(shù)據(jù)拼接后再寫入;

2)直接追加】

4.1 先讀取原表,將現(xiàn)有數(shù)據(jù)與原表數(shù)據(jù)拼接后再寫入;

【注:將df_new寫入excel,這個是只針對一個sheet的表格,如果是多個sheet,是消失的。因為,這其實相當(dāng)于刪除原來的,新建了一個表。】

import pandas as pd
#讀取Excel中的數(shù)據(jù)
df_0 = pd.read_excel(r'C:\Users\XXXXXX\Desktop\pandas寫入excel.xlsx',sheet_name='sheet_1')
#修改一下索引,將id改成索引。
df_0 = df_0.set_index(keys=['id'])
print(df_0)
#創(chuàng)建一個數(shù)據(jù)
df = pd.DataFrame({
    'name':['Lily','Jack','Rose','Joe'],
    'age':[23,23,33,45],
    'job':['student','doctor','worker','lawyer']
},index=range(1,5),
)
#將index重新命名為id
df.index.name='id'
print(df)

df_new = pd.concat([df,df_0],axis=0)
print(df_new)
#將df_new寫入excel,這個是只針對一個sheet的表格,如果是多個sheet,是消失的。因為,這其實相當(dāng)于刪除原來的,新建了一個表。
df_new.to_excel(r'C:\Users\XXXXXX\Desktop\pandas寫入excel.xlsx',sheet_name='sheet_1',index=True)

用pandas向表格中指定的行和列寫入數(shù)據(jù),pandas,python,數(shù)據(jù)分析

4.2 Python對excel追加數(shù)據(jù)

利用pd.ExcelWriter(),其實是重新寫入。

import pandas as pd
from pandas import ExcelWriter
from openpyxl import load_workbook
#讀取Excel中的數(shù)據(jù)
df_0 = pd.read_excel(r'C:\Users\XXXXXX\Desktop\pandaswriterexcel.xlsx',sheet_name='Sheet1')
#修改一下索引,將id改成索引。
df_0 = df_0.set_index(keys=['id'])
print(df_0)
old_rows = df_0.shape[0]
df = pd.DataFrame({
    'name':['Lucy','Tofy','Anna','liting'],
    'age':[10,12,12,9],
    'job':['student','doctor','worker','lawyer']
},index=range(old_rows+1,old_rows+5),
)
#將index重新命名為id
df.index.name='id'
print(df)
writer = ExcelWriter(r'C:\Users\XXXXXX\Desktop\pandas寫入excel.xlsx',mode='w')
#現(xiàn)將df_0存入
df_0.to_excel(writer,startrow=0,index=False,sheet_name='Sheet1')
#將df寫入,注意開始行。
df.to_excel(writer,startrow=old_rows+1,header=None,index=False,sheet_name='Sheet1')
writer.save()

用pandas向表格中指定的行和列寫入數(shù)據(jù),pandas,python,數(shù)據(jù)分析

5 寫入多個excel中

import pandas as pd
#讀取Excel中的數(shù)據(jù)

df = pd.DataFrame({
    'name':['Lucy','Tofy','Anna','liting'],
    'age':[10,12,12,9],
    'job':['student','doctor','worker','lawyer']
},index=range(1,5),
)
#將index重新命名為id
df.index.name='id'
#利用for循環(huán)存入多個excel
for i in range(1,3):
    df.to_excel(fr'C:\Users\XXXXXX\Desktop\p_e_{i}.xlsx',index=True,engine='openpyxl')

用pandas向表格中指定的行和列寫入數(shù)據(jù),pandas,python,數(shù)據(jù)分析

6 兩種數(shù)據(jù)類型轉(zhuǎn)成DataFrame寫入excel的案例

6.1 JSON解析后存入Excel

import pandas as pd
#讀取JSON數(shù)據(jù)。
f_path = r'C:\Users\XXXXXX\Desktop\測試數(shù)據(jù).json'
data = pd.read_json(f_path,encoding='utf-8')
# print(data)
#獲取list,result的值。
data_list = data.loc['list','result']
# print(data_list)
df_list = []
for one_info in data_list:
    df = pd.DataFrame(one_info,index=[0])
    df_list.append(df)
data_excel = pd.concat(df_list)
data_excel.to_excel(r'C:\Users\XXXXXX\Desktop\json_2_excel.xlsx',index=False)

用pandas向表格中指定的行和列寫入數(shù)據(jù),pandas,python,數(shù)據(jù)分析

6.2 列表解析后存入Excel

import pandas as pd
#先構(gòu)造一個列表數(shù)據(jù)
data_list = [['name','age','job'],['Lucy',33,'doctor'],['Tom',34,'teacher'],['Anna',22,'student']]
df = pd.DataFrame(data_list[1:],columns=data_list[0])
# print(df)
df.to_excel(r'C:\Users\XXXXXX\Desktop\list_2_excel.xlsx',index=False)

用pandas向表格中指定的行和列寫入數(shù)據(jù),pandas,python,數(shù)據(jù)分析

3、pandas寫入csv、txt

3.1 df.to_csv()參數(shù)詳解

df.to_csv(
path_or_buf=None, #文件存儲路徑
sep=',', #分隔符
na_rep='', #缺失值填充,默認(rèn)為''
float_format=None, #浮點小數(shù)的格式。
columns=None, #list。要寫入的字段。一般默認(rèn)為None,即全部寫入。
header=True, #列名。默認(rèn)為True,即寫入的列名為,df的列標(biāo)簽。
index=True, #行索引。默認(rèn)為True,即寫入的行索引為,df的行標(biāo)簽。
index_label=None, #索引列的標(biāo)簽名。
mode='w', #寫入模式{"w","a","r","w+","a+","r+"},一般默認(rèn)為"w",寫入。
encoding=None, #編碼。
compression='infer', #
quoting=None, 
quotechar='"', 
lineterminator=None, 
chunksize=None, #一次寫入的行數(shù)。
date_format=None, #日期格式。
doublequote=True, 
escapechar=None, 
decimal='.', 
errors='strict', 
storage_options=None
)

3.2 df.to_csv():寫入數(shù)據(jù)

import pandas as pd
#先構(gòu)造一個列表數(shù)據(jù)
data_list = [['name','age','job'],['Lucy',33,'doctor'],['Tom',34,'teacher'],['Anna',22,'student']]
df = pd.DataFrame(data_list[1:],columns=data_list[0])
# print(df)
df.to_csv(r'C:\Users\XXXXXX\Desktop\list_2_excel.csv',index=False,sep=',')

用pandas向表格中指定的行和列寫入數(shù)據(jù),pandas,python,數(shù)據(jù)分析

3.3 df.to_csv():追加數(shù)據(jù)

import pandas as pd
#先構(gòu)造一個列表數(shù)據(jù)
data_list = [['name','age','job'],['Lucy',33,'doctor'],['Tom',34,'teacher'],['Anna',22,'student']]
df = pd.DataFrame(data_list[1:],columns=data_list[0])
# print(df)
df.to_csv(r'C:\Users\XXXXXX\Desktop\list_2_excel.csv',index=False,sep=',',mode='a',header=False)#header=False時,列名才不會追加進(jìn)去。

用pandas向表格中指定的行和列寫入數(shù)據(jù),pandas,python,數(shù)據(jù)分析

4、pandas寫入SQL數(shù)據(jù)庫

4.1 df.to_sql()參數(shù)詳情

df.to_sql(
name='table', #表名。
con=con, #連接。
if_exists='append', #判斷這個表是否存在,若存在,添加。
index=False,#索引是否寫入,否。
dtype={'col1':sqlalchemy.types.INTEGER(),
                 'col2':sqlalchemy.types.NVARCHAR(length=255),
                 'col_time':sqlalchemy.DateTime(),
                 'col_bool':sqlalchemy.types.Boolean
          }#每一列寫入時的數(shù)據(jù)類型??刹惶?。
          )

4.2 實操案例

#導(dǎo)入必要的模塊
import pandas as pd
from sqlalchemy import create_engine
import pymysql
data_list = [['name','age','job'],['Lucy',33,'doctor'],['Tom',34,'teacher'],['Anna',22,'student']]
df = pd.DataFrame(data_list[1:],columns=data_list[0])

#連接MySQl
# engine = create_engine('mysql+pymysql://usrname:password@localhost:端口號/database')
engine = create_engine('mysql+pymysql://sh******ei:SCW*******scw@rm-uf6x********.mysql.rds.aliyuncs.com:3306/*****database')
con = engine.connect()
df.to_sql('to_sql測試',con=con,index=False,if_exists='append')

用pandas向表格中指定的行和列寫入數(shù)據(jù),pandas,python,數(shù)據(jù)分析文章來源地址http://www.zghlxwxcb.cn/news/detail-798076.html

到了這里,關(guān)于Python之Pandas的常用技能【寫入數(shù)據(jù)】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包