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