pandas的簡單使用

pandas能夠對數據進行整理分析
由於要對excel中的源數據進行分組和處理,因此想到用pandas來處理。試用過確實比本身去讀寫快捷不少
(實際pandas底層也是用xlrd,xlwt兩個第三方包來讀取Excel和寫文件到Excel中)
 
1、pandas處理的數據結構介紹
一、series結構
該結構相似一個數組
pd.Series([1,2,3,4,5])
 
二、DataFrame
使用DataFrame創造的結果與字典相似,實際是一個key對應的值爲series的結構
從excel中直接讀出來的數據就是DataFrame結構,如下面例子爲例:【d.第一列】能讀出第一列的全部值,即後面的數組的值
d=pd.DataFrame({"第一列":[11,22,33,44,55],"第二列":['a','b','c','d','e'],"第三列":"haha"})
d=pd.DataFrame([{"第一列":11,"第二列":'a'},{"第一列":22,"第二列":'b'}])
 
2、基本語法
import pandas as pd
 
一、從文件中讀取數據
data_origin = pd.read_excel(f)#從excel中讀取數據,也能夠經過read_csv()等從其餘格式文件中讀取數據
 
二、打印數據的長度,excel中有多少行
len(data_origin)
 
三、打印數據的索引
print(data_format.index)#打印索引結果,列出索引範圍RangeIndex(start=0, stop=194, step=1)

 

四、將excel中的數據只取某幾個列名下的數據重組
data_format = data_origin[["標題", "解決方案"]]#得到excel第一行的內容爲列名的數據,「標題」和「解決方案」爲列名
 
五、打印數據的某列結果的值
print(data_origin.標題)#打印dataFrame中某個列的數據,這裏打印的第一列爲標題的列的數據,也能夠用data_origin.A等表達
print(data_format["標題"])
 
六、打印dataFrame數據的列表標題、除標題外的值
print(d.columns)#顯示全部的列表索引,對應到excel的標題
print(d.values)#顯示除標題行外的值
 
七、將列表數據倒置,橫豎轉換
print(d.T)
 
八、得到索引值爲1到3的值,例子即爲第2行到第3行的數據
print(d[1:3])
 
打印第一行的數據
print(d.iloc[1].values) 
 
九、過濾數據
9.1組合過濾:第一列值大於22和第二列值等於c的
print(d[(d.第一列 > 22) & (d.第二列 == 'c')])
 
9.2使用query過濾
print(data_format.query('(解決方案 not in  ["不是BUG","重複BUG","沒法重現"] & 建立人 != ("林立星"))'))#這種方案也可行,可是不能直接寫變量,比較麻煩
 
9.3判斷值是否在某個數組內用isin()
print(data_format[(data_format.解決方案.isin(invalid_resove))])#判斷數據是否在XX區間內
 
9.4判斷值是否再也不某個數字內用~
bug_effective = data_format[
    (data_format.狀態.isin(["已關閉"]) & ~data_format.解決方案.isin(invalid_resove))]
 
十、得到數據的前10行
print(data_format.head(10))#得到dataFrame數據的前10行
 
十一、將結果輸出到excel中
使用to_excel()方法
data_effective.to_excel("./解析BUG結果.xls",sheet_name="有效BUG")#這種每次都會覆蓋前面保存的sheet的值
 
直接用上面的方法,向同一個excel中輸出時會將excel中原有的sheet覆蓋了,能夠用下面的方法解決這個問題
with pd.ExcelWriter('./解析BUG結果.xls') as writer:
    data_effective.to_excel(writer, '有效BUG')
    data_unkown_reslover.to_excel(writer, '未知解決人的BUG')
 
第二種方法:用這種方法主要是由於個人數據結果有的用的插入excel有的是保存的圖標,結果不同
from openpyxl import load_workbook
book= load_workbook('./存在的文件名.xlsx')
writer = pd.ExcelWriter('./存在的文件名.xlsx', engine='openpyxl')
writer.book = book
bug_effective.to_excel(writer, ’sheet的標題')
writer.save()
 
十二、過濾字段值不爲NAN(空)的結果.notnull()
info[info.從新打開次數.notnull()])
 
1三、將dataFrame存儲到文件中時指定列的順序,使用columns參數值來指定
.to_excel(writer,sheet名,columns=["列名1」,"列名2",」列名3」])
 
例子:pd.DataFrame(buganalysis_android).to_excel(writer, 'Android端我的BUG',columns=["開發姓名","BUG總數","編碼錯誤","歷史遺留","需求變動致使","之後解決","從新打開數量」])
 
1四、過濾數據,多個條件組合查詢
多個條件用()組合起來,使用&進行與,|進行或
data[(data.修復人.notnull()) & (data.修復人.isin(RD["Android"]) | data.修復人.isin(RD["server"]))]
 
1五、打印DataFrame下的全部列名
print(data.columns.values.tolist())

 

1六、操做數據庫
https://www.cnblogs.com/meitian/p/10502657.html
相關文章
相關標籤/搜索