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文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笔记本屏幕30hz_你真的了解笔记本电池
- 下一篇: JAVA入门级教学之(算数运算符)