日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

pythoncsv文件处理_Python处理ExcelCSV文件

發布時間:2024/7/23 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pythoncsv文件处理_Python处理ExcelCSV文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python處理Excel&CSV文件

前言

在今年很早的時候,寫過一篇用 Python 玩 Excel 的文章,可以回顧《Python操作 excel ?應該這么玩!》

當時介紹了用 Pandas 庫玩股票,在 Excel 中畫出一個圖來。

現在有了前幾天爬取的王者榮耀 csv 文件,還需要用 pandas 庫來操作處理下。

實戰中去體會這些第三方庫的使用技巧,印象才會比較深刻。

環境準備

開始之前,首先確保你安裝了 pandas 庫。

pip install pandas

簡單用官網介紹的文字來說明下,何為 pandas?Pandas是一個開源的,BSD許可的庫,為Python編程語言提> > 供高性能,易于使用的數據結構和數據分析工具。

https://www.pypandas.cn/intro/

pandas中文官網

處理數據

有些時候,使用一些工具類的庫,如何才能更好地練手?

一旦有了使用場景,那么,便是最好的練手機會。(再次強調)

現在我的需求很明確了:

有一個王者榮耀的 csv 數據,我需要將其讀取到,然后將字典類型變成列,同時,需要讓頭像下載后自動寫進 Excel 中。

而 Excel 的數據最終會提供給玩王者的朋友們, 也為了后續的分析而用。

1.pd.read_csv()

import pandas as pd

df = pd.read_csv(path) # 讀取 csv 文件,看返回的是什么?

打個斷點看下,df最終返回的結果:

查看 debug 面板,df 的類型是 DataFrame。

來看下官網是如何介紹的?

如果還不理解,你可以把 DataFrame 想成 Excel 中的 Sheet 頁,它有著行和列,所以稱之為二維異構表格。

2.df['列名'] 獲取單列

在原來的 csv 中,有兩列是字典類型的,現在需要將每列的每行數據取出來,并且生成新的列,而列名就是字典中的 key ,單列的每行數據則是字典中的 value。

attr_details_data_dict = df['attr_details_data_dict'] # 獲取單列

取出來則是單列,而類型是 Series ,一維同構數組。(看上面官方的圖介紹)

3.pd.DataFrame(dict) 創建新的DataFrame

detail_col_list = []

for detail_str in attr_details_data_dict:

detail_df = pd.DataFrame(json.loads(detail_str), index=[0])

detail_col_list.append(detail_df)

不難發現,現在的單列數據中每行看似都是 dict 類型的,但用 for 循環遍歷時,取出的數據則是 str 類型,所以要用 json 庫轉換成 dict。

在用 pd.DataFrame 來構造新的 DataFrame,需要注意,構造時,dict 中的 value 值必須是可迭代的類型,比如 list 等,不然會報錯:

由于現在 dict 中的 value 是單個字符串,所以需要加上 Index=[0] 的參數,方可解決問題。

這樣最終構造出來的每個單獨的 DataFrame,我們將其追加到一個列表中,便于后續合并使用。

4.pd.concat([df1,df2....]) 合并DataFrame

new_detail_df = pd.concat(detail_col_list, axis=0, ignore_index=True)

參數 axis=0 表示上下合并,1表示左右合并,ignore_index=True表示忽略原來的索引。

最終,你可以看到由 list 中多個 df 上下合并而成大的 df,和 csv 中的順序一致,數據一致。

PS : 關于這里的 for 循環,如果你會列表表達式,可以寫成一行處理,很簡潔:

detail_col_list = [pd.DataFrame(json.loads(detail_str), index=[0]) for detail_str in attr_details_data_dict]

上面四步驟是在處理原來英雄的初始化數值的參數。

原 csv 中還有一列,也是 dict 類型,類似處理即可。

當然如果你對 Excel 處理,以上的后三部也是適用的。

pandas寫入Excel

寫入 Excel 之前,我們有一項工作沒有做,就是將我們新增的列合并到原有的 df 上去,把原來 df 中的兩個 dict 列去除掉。

1.去除 df 中的某列。df.drop(['列名'],axis=1)

df2 = df.drop(['attr_details_data_dict', 'recommand_stars_dict'], axis=1) # 刪除已經處理過的列

print(df2.columns) # 打印列名

2.將新增列合并刪除后的列上。

依然采用 concat 函數去做合并,這次是左右合并,所以 axis=1 ,列合并(左右), axis=0,行合并(上下)。

# 合并新舊列

final_df = pd.concat([df2, new_detail_df, new_recommend_df], axis=1)

結果:

3.寫入 Excel

寫入操作很簡單,只需要如下:

final_df.to_excel('xxx.xlsx')

總結

pandas的操作,已經有了中文的官方文檔,非常友好,大家可以對照中文文檔去看下。

關于 Excel 中的頭像下載,以及 Excel 的數據清理,放在下一篇文章中講解。本篇內容長度足矣了,不繼續寫了。

老規矩,本章代碼已經上傳到 github 上,公號后臺回復 王者數據 ,即可獲得源碼和excel文件!

總結

以上是生活随笔為你收集整理的pythoncsv文件处理_Python处理ExcelCSV文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。