# -*- coding: utf-8 -*-
import pandas as pd
dic = {
“name” : [“儲蓄保險王”,”正義真話俠”,”SavingKing”,”賴:@wvr5039s”],
“math” : [80,75,95,88],
“physics”: [77,96,71,82]
}
df = pd.DataFrame(dic)
print(“字典轉為DataFrame:\n”,df)
#字典的 key變成DataFrame的欄標籤
#有種轉置的感覺
print(“{:=^40s}”.format(“傳說中的分隔線”))
lst2D =[
[“儲蓄保險王”,80,77],
[“正義真話俠”,75,96],
[“SavingKing”,95,71],
[“賴:@wvr5039s”,88,82]
]
df2 = pd.DataFrame(lst2D)
print(“2D list轉為DataFrame:\n”,df2)
輸出結果:
字典轉為DataFrame
字典的 key變成DataFrame的欄標籤
有種轉置的感覺
自動加上0~3的index
2D list轉為DataFrame
則原封不動地轉
自動加上
0~3的index
0~2的header
利用index及columns屬性(Attribute)
客製化index跟欄位名稱
df.index = [“一”,”二”,”三”,”四”]
df.columns = [“姓名”,”數學成績”,”物理成績”]
#未產生新的DataFrame,對原DataFrame作用
使用.head(n) .tail(m)
取首n列,尾m列
並生成一個新的DataFrame
df_head = df.head(2)
df_tail = df.tail(2)
[]中,指定欄位名稱或索引值
取得資料
print(“取得單一欄位資料,型別為Series:\n”,df[“name”],
“\n型別:”,type(df[“name”]) )
print(“{:=^30s}”.format(“傳說中的分隔線”))
print(“取得單一欄位資料,型別為DataFrame:\n”,df[[“name”]],
“\n型別:”,type(df[[“name”]]) ) #兩個[]
print(“{:=^30s}”.format(“傳說中的分隔線”))
print(“取得多欄位資料,型別為DataFrame:\n”,df[[“name”,”math”]],
“\n型別:”,type(df[[“name”,”math”]]) ) #兩個[]
print(“{:=^30s}”.format(“傳說中的分隔線”))
print(“取得索引值0~2的資料,型別為DataFrame:\n”,df[0:3],
“\n型別:”,type(df[0:3]) )
#取橫列的話只要一個[ ]
#取直欄的話要[[ ]] (DataFrame)
#取直欄只用[ ],其type為Series,非DataFrame
print(“{:=^30s}”.format(“傳說中的分隔線”))
輸出:
用.at[index,欄位名稱] 取單一資料:
print(“用.at[]取資料:”,df.at[0,”name”])
用.iat[index,欄位順序] 取單一資料:
print(“用.iat[]取資料:”,df.iat[1,0])
用.loc[ [index1,index2],[欄位名稱1,欄位名稱2] ]取資料
print(“用.loc[]取資料:\n”,df.loc[ [0,1],[“name”,”physics”]])
用.iloc[ [index1,index2],[欄位順序1,欄位順序2] ]取資料
print(“用.iloc[]取資料:\n”,df.iloc[ [0,1],[0,2]])
類似切片的做法
print(“用.iloc[]取資料:\n”,df.iloc[ 0:3,0:2])
#df.iloc[ 0:3,0:2]
#非df.iloc[ [0:3],[0:2]]
print(“用.loc[]取資料:\n”,\
df.loc[ df[“name”]==”儲蓄保險王”,
[“name”,”math”,”physics”] ] )
輸出結果:
用iloc[ bool_list ] 完成loc[]做的事情:
lst = list( df.iloc[:,0] == “儲蓄保險王”)
#list()中是一個Series物件
#iloc[]吃list,不吃Series
print(lst)
print( df.iloc[lst,:] )
輸出結果:
近期留言