機器學習資料科學包之pandas

2021-10-04 18:46:25 字數 4076 閱讀 8345

資料的視覺化

資料的載入與儲存

import numpy as np

import pandas as pd

#建立資料

dates = pd.date_range('20200405',periods=6)

df = pd.dataframe(np.random.randn(6,4),index=dates,columns=list('abcd'))

df

#重新修改資料

df1 = df.reindex(index=dates[0:4],columns=list(df.columns)+ ['e'])

df1

#修改某行某列的資料

df1.loc[dates[1:3],'e'] = 2

df1

#丟棄資料中含有nan的行(並沒有改變df1,只是不顯示含有nan的行)

df1.dropna()

#對空資料(nan)進行賦值

df1.fillna(value=5)

#判斷資料中是否含有nan

pd.isnull(df1).any().any()

#對資料的每一行列求平均值

df1.mean()

#二維矩陣減去一維的陣列

s = pd.series([1,3,5,np.nan,6,8],index=dates)

df.sub(s,axis='index')

#累加(下面一行是上面一行的累加)
# a的最大值減去a的最小值
#自定義乙個函式,列印每一列的資料型別,輸出每一列的資料和

def _sum(x):

print(type(x))

return x.sum()

#建立乙個10--20含有20個數字的隨機序列

s = pd.series(np.random.randint(10,20,size = 20))

s檢視序列中的資料分布

s.value_counts()

#序列中重複最多的是哪個

s.mode()

df = pd.dataframe(np.random.randn(10,4),columns=list('abcd'))

df

#選取第3列的所有行

df.iloc[:,3]

#選取前三行

df.iloc[:3]

#合併

pd.concat([df.iloc[:3],df.iloc[3:7],df.iloc[7:]])

#比較兩個資料框

(df == df1).all().all()

s = pd.series(np.random.randint(1,10,4),index=list('abcd'))

#資料的插入

#建立乙個資料

df = pd.dataframe()

df

#利用a來分組然後求和

df.groupby('a').sum()

df.groupby(['a','b']).sum()

整形:將資料中行的索引和列的索引進行互換

#建立乙個元組

tuples = list(zip(*[['bar','bar','baz','baz',

'foo','foo','qux','qux'],

['one','two','one','two',

'one','two','one','two']]))

tuples

index = pd.multiindex.from_tuples(tuples,names=['first','second'])

df = pd.dataframe(np.random.randn(8,2),index=index,columns=['a','b'])

df

#將列索引轉為行索引

stacked = df.stack()

stacked

#將行索引轉換為列索引

stacked.unstack().unstack()

#建立資料

df = pd.dataframe()

df

#資料透視

#以a、b為行索引,以c為列索引,針對d的資料

df.pivot_table(values=['d'],index=['a','b'],columns=['c'])

#求平均值

df[df.a == 'one'].groupby('c').mean()

#建立時間序列 ,以秒為單位的600個

rng = pd.date_range('20160203',periods=600,freq='s')

rng

#建立乙個值和序列對應起來

a = pd.dataframe(np.random.randint(10,50,len(rng)),index=rng)

a

#資料太大不利於分析,故重新取樣,取兩分鐘的資料,取平均值

a.resample('2min').mean()

rng = pd.period_range('2000q1','2006q2',freq='q')

rng

#轉換為時間日期

rng.to_timestamp()

#計算時間間隔

pd.timestamp('20100103') - pd.timestamp('20060306')

df = pd.dataframe()

df

#新增類別

df['grade'] = df.raw_grade.astype('category')

df

#修改類別

df.grade.cat.categories = ['ni','hao','ma','jack']

df

#對grade進行排序,是利用的他的值(也就是利用的raw_grade)

df.sort_values(by='grade',ascending=false)

#對資料進行視覺化

a = pd.series(np.random.randn(1000),index=pd.date_range('20000101',periods=1000))

a

#對資料進行求和

a = a.cumsum()

a

#將資料畫出來

a.plot()

df = pd.dataframe(np.random.randn(100,4),columns=list('abcd'))

df

#儲存資料

df.to_csv('data.asv')

#檢視資料內容

%more data.asv

#發現上面的資料錯誤的將索引讀成了值,故重新改回來

pd.read_csv('data.asv',index_col = 0)

資料科學之機器學習10 聚類分析1

note 聚類的劃分 根據分類物件的不同,可以分為 q型聚類分析和r型聚類分析。q型是指對樣品物件進行聚類 而r型則是對變數 屬性 進行聚類。一 相似性的度量 除了使用有序尺度變數 將屬性劃分為一級 二級等等的有次序關係的量來表示 和名義尺度變數 使用既沒有等級關係,又不存在數量關係的量來表示。比如...

機器學習 資料驅動的科學

引言 傳統上,計算機會按照我們輸入的指令一步步執行。而機器學習卻是通過輸入資料而不是指令來進行各種工作。本文選自 深入淺出深度學習 原理剖析與python實踐 機器學習,也被稱為統計機器學習,是人工智慧領域的乙個分支,其基本思想是基於資料構建統計模型,並利用模型對資料進行分析和 的一門學科。傳統上,...

Python資料科學手冊(5) 機器學習

python資料科學手冊最後一章講的是機器學習,這是乙個很大的課題,每一種演算法都可以鑽研,遠不是一篇文章能講清楚的,這裡主要總結一下書中關於特徵工程的課題。俗話說,巧婦難為無公尺之炊。在機器學習中,資料和特徵便是 公尺 模型和演算法則是 巧婦 對於乙個機器學習問題,資料和特徵往往決定了結果的上限。...