檢視dataframe狀況
………………….
顯示資料概況
顯示資料維度(日誌筆數和欄位數量)
df.shape
ex:
(100, 5)
顯示資料前10行
df.head()
ex:
只顯示3筆
df.head(3)
資料描述
了解data裡面的狀態
df.describe(include=’all’)
ex:
categorical numeric object
count 3 3.0 3
unique 3 NaN 3
top f NaN c
freq 1 NaN 1
mean NaN 2.0 NaN
std NaN 1.0 NaN
min NaN 1.0 NaN
25% NaN 1.5 NaN
50% NaN 2.0 NaN
75% NaN 2.5 NaN
max NaN 3.0 NaN
顯示所有欄位名稱
df.columns.values
df.columns
顯示所有欄位的類型
df.dtypes
顯示特定欄位
df.columns[ ]
ex:
顯示欄位0的名稱
print df.columns[0]
顯示特定列數
df[ < start>:< end> ]
ex:
顯示第10列到第11列的資料
df[10:11]
資料排序
sort_values( < fieldset > [,paramater] )
ex:
dataphoto.sort_values(by=’field1′,ascending=True)
ex:
dataphoto[‘field1’].sort_values(ascending=True)
ex:
df.groupby(‘job’).sort_values([‘job’,’count’],ascending=False)
ps:
參數加 inplace=True可以儲存排序結果
…
顯示資料統計結果
計算平均值
df[< field name >].mean()
ex:
> df[‘byte’].mean()
列出該欄位有少數量
df[< field name >].count()
列出唯一的值和出現次數
df[< field name >].value_counts()
ex:
> df[‘protocol’].value_counts()
Tcp: 523
TCP: 52
udp: 45
UDP: 12
了解每個欄位空值的數量
> df.isnull().sum()
ex:
df.isnull().sum()
ipv4 52
ipv6 129
protocol 0
port 0
列出唯一的值
df[< field name >].unique()
列出一些統計資訊
df[< field name >].describe()
….
用groupby看資料
size()
用size()看sector裡面每個組別內的大小
ex:
sector = df.groupby(“fileid”)
print sector.size()
count(*)
df.groupby(“< group by column>”).count()
ex:
print df.groupby(“fileid”).count()
count(distinct column)
df.groupby(“< group by column>”).< column>.nunique()
ex:
print df.groupby(“fileid”).userid.nunique()
average
ex:
pddata2=pddata.groupby(by=’fileid’).mean()
其他groupby支援的功能
max,min,sum,std,median
…
搜尋資料
選擇指定條件的行,完整比對
ex:
df[ df.name != ‘Tina’ ]
選擇指定條件的行,糢糊比對
.str.contains( < string> )
ex:
df[ df[‘filed1′].str.contains(‘@’,na = False) ]
選取特定欄位非null的行
< column name>.notnull()
ex:
data[data[‘攻擊者使用者名稱’].notnull()]
選取特定欄位為null的行
< column name>.isnull()
ex:
data[data[‘攻擊者使用者名稱’].isnull()]
選取特定型態的欄位
select_dtypes()
ex:
df.select_dtypes(include=[‘int64’])
df.select_dtypes(exclude=[object])