資料分析: DataFrame

The K7發表於2020-12-07
一.DataFrame的建立(二維陣列,字典)
二.DataFrame的增刪改查
	增:1.列增加的三種方式:
			(1)df['列名']=[10,20,30]
			(2)df.loc[:,'列名']=[10,20,30]
			(3)df.insert(插入的位置,'列名',[10,20,30])
		2.行增加的三種方式:
			(1)df.loc['行名']=[10,20,30]
			(2)new_df=pd.DataFrame({'語文':[10,20,30],'英語':[40,50,60]},index=['徐凱','李小龍'])
			   df.append(new_df)	
		注意點:列的增加插入的位置從0開始索引,行的增加append會建立一個新的物件	

建立DataFrame物件的兩種方式

# 使用二維陣列的方式建立DataFrame物件
import pandas as pd

pd.set_option('display.unicode.east_asian_width',True) # 解決資料輸出行列不對齊
data=[[10,20,30],[40,50,60],[70,80,90]]  # 10,20,30在一行
index=['徐凱','周星馳','李小龍']
columns=['數學','語文','英語']
df=pd.DataFrame(data=data,index=index,columns=columns)
print(df)
# 使用字典的方式建立DataFrame物件
import pandas as pd

pd.set_option('display.unicode.east_asian_width',True)
data={
    '語文':[10,20,30],  # 10,20,30在一列
    '數學':[40,50,60],
    '英語':[70,80,90]
}
index=['徐凱','周星馳','李小龍']
df=pd.DataFrame(data=data,index=index)
print(df)

DataFrame的增

# 增加一列物理成績
df['物理'] = [11,22,33]
# 增加一列體育成績
df.loc[:,'體育']=[44,55,66]
# 增加一列化學成績
df.insert(5,'化學',[77,88,99])
# 增加一行‘錢多多’的各科成績
df.loc['錢多多']=[11,12,13,14,15,16]
# 增加多行各科成績
import pandas as pd

pd.set_option('display.unicode.east_asian_width',True)
data={
    '語文':[10,20,30],
    '數學':[40,50,60],
    '英語':[70,80,90]
}
index=['徐凱','周星馳','李小龍']
df=pd.DataFrame(data=data,index=index)

# 方式一
data=[[10,20,30],[49,50,60]]
index=['甄子丹','成龍']
columns=['語文','數學','英語']
new_df=pd.DataFrame(data=data,index=index,columns=columns)
df.append(new_df)
# 方式二
new_df=pd.DataFrame({'語文':[40,50],'數學':[89,99],'英語':[11,22]},index=['甄子丹','成龍'])
df1 = df.append(new_df)
df1  # 會生成一個新的二維列表

DataFrame的刪

# 刪除列
# 方式一
# df.drop(['列名'],axis=1,inplace=True),axis=1是刪除列
drop.drop(['語文'],axis=1, inplace=True)

# 方式二
# df.drop(columns='列名',inplace=True),inplace值為True,替換原陣列
df.drop(columns='數學',inplace=True)

# 方式三
# df.drop(labels='列名',axis=1,inplace=True)
df.drop(labels='數學',axis=1,inplace=True)


# 刪除行
# 方式一
# df.drop(['行索引'],axis=0, inplace=True)
df.drop(['甄子丹'],axis=0,inplace=True)

# 方式二
# df.drop(index='行索引',inplace=True)
df.drop(index='甄子丹',inplace=True)

# 方式三
# df.drop(labels='行索引',axis=0,inplace=True)
df.drop(labels='甄子丹',axis=0,inplace=True)

DataFrame的改

# 修改列標題(需要將所有列的新標題都寫上)
# 方式一
df.columns=['Chinese','Math','English']

# 方式二
df.rename(columns={'Chinese':'語文','Math':'數學','English':'英語'})

# 修改行標題
# 方式一
df.index=list('1234')

# 方式二
df.rename(index={'甄子丹':0,'成龍':1},axis=0,inplace=True)

DataFrame的查

# 抽取一行
df.loc['甄子丹']

# 抽取多行(loc裡面是行索引,iloc裡面是數字)
df.loc[['甄子丹','成龍']]
df.iloc[[0,1]]

# 抽取指定的列
df['數學']

# 抽取多列
df[['數學','英語']] 

# 抽取語文分數大於105,數學分數大於88的同學
df.loc[(df['語文']>105)&(df['數學']>88)]

相關文章