① EXCEL如果大數據篩選一個名字的其他數據平均值
如果數據在A列,那麼輸入
=SUBTOTAL(1,A:A)
或者=SUBTOTAL(101,A:A)
公式表示:對A列可見單元格求平均值。隱藏的數據不在求值范圍。
?
詳見附圖
?
② spss如何計算加權平均數
選擇菜單數據——加權個案,在最下邊。打開主面板,在右邊選擇加權個案,然後把你用來做頻率的變數選進去。然後確定。在菜單分析——描述統計里邊,打開主面板,選擇你想算平均數的變數,然後,確定,ok。這之後你所有的計算都是加過全的,如果你想取消掉,那就重新打開加權個案主面板,選回不對個案進行加權就可以了。
ppv課,大數據培訓專家,您身邊最專業的大數據中心,海量視頻免費看哦。
③ # 大數據的統計學基礎
概率論是統計學的基礎,統計學沖鋒在應用第一線,概率論提供武器。
我們在學習R的時候,會做過假設檢驗。做假設檢驗的時候會有一個基本的技術就是構造出統計量,這些統計量要滿足一定的概率密度分布,然後我算這個統計量的值,來判定它在這個密度分布裡面,分布在哪個區域,出現在這個區域內的可能性有多高,如果可能性太低,我們就判定我們的假設檢驗是不成立的。 那麼如何構造這個統計量,這是一個很有技術的東西,同時也是由數學家來完成的,那這個工作就是概率論所作的事情。
古典概率論: 扔硬幣,正面1/2反面1/2,扔的次數之間是相互獨立的。 但是這個等概率事件確實是一個不是很嚴謹的事情。仔細想一想其實是很有趣的。 柯爾莫哥洛夫創建現代概率論 他將概率論提出了許多公理,因此將概率論變成了非常嚴謹的一門學科。
學會和運用概率,會使人變得聰明,決策更准確。
統計學 : 統計學可以分為:描述統計學與推斷統計學 描述統計學 :使用特定的數字或者圖表來體現數據的集中程度和離散程度。比如:每次考試算的平均分,最高分,各個分數段的人數分布等,也是屬於描述統計學的范圍。 推斷統計學 :根據樣本數據推斷總體數據特徵。比如:產品質量檢查,一般採用抽樣檢測,根據所抽樣本的質量合格率作為總體的質量合格率的一個估計。 統計學的應用十分廣泛,可以說,只要有數據,就有統計學的用武之地。目前比較熱門的應用:經濟學,醫學,心理學,IT行業大數據方面等。
例如:對於 1 2 3 4 5 這組數據,你會使用哪個數字作為代表呢? 答案是3。 因為3是這組數據的中心。 對於一組數據,如果只容許使用一個數字去代表這組數據,那麼這個數字應該如何選擇???-----選擇數據的中心,即反映數據集中趨勢的統計量。 集中趨勢:在統計學裡面的意思是任意種數據向 中心值靠攏 的程度。它可以反映出數據中心點所在的位置。 我們經常用到的能夠反映出集中趨勢的統計量: 均值:算數平均數,描述 平均水平 。 中位數:將數據按大小排列後位於正中間的數描述,描述 中等水平 。 眾數:數據種出現最多的數,描述 一般水平 。
均值:算數平均數 例如:某次數學考試種,小組A與小組B的成員成績分別如下: A:70,85,62,98,92 B:82,87,95,80,83 分別求出兩組的平均數,並比較兩組的成績。
組B的平均分比組A的高,就是組B的總體成績比組A高。
中位數:將數據按大小順序(從大到小或者從小到大)排列後處於 中間位置 的數。 例如:58,32,46,92,73,88,23 1.先排序:23,32,46,58,73,88,92 2.找出中間位置的數23,32,46, 58 ,73,88,92 如果數據中是偶數個數,那麼結果會發生什麼改變? 例如:58,32,46,92,73,88,23,63 1.先排序:23,32,46,58,63,73,88,92 2.找出處於中間位置的數:23,32,46, 58 , 63 ,73,88,92 3.若處於中間位置的數據有兩個(也就是數據的總個數為偶數時),中位數為中間兩個數的算數平均數:(58+63)/2=60.5 在原數據中,四個數字比60.5小,四個數字比60.5大。
眾數:數據中出現次數最多的數(所佔比例最大的數) 一組數據中,可能會存在多個眾數,也可能不存在眾數。 1 2 2 3 3 中,眾數是2 和 3 1 2 3 4 5 中,沒有眾數 1 1 2 2 3 3 4 4 中,也沒有眾數 只要出現的頻率是一樣的,那麼就不存在眾數 眾數不僅適用於數值型數據,對於非數值型數據也同樣適合 {蘋果,蘋果,香蕉,橙子,橙子,橙子,橙子,桃子}這一組數據,沒有什麼均值中位數科研,但是存在眾數---橙子。 但是在R語言裡面沒有直接計算眾數的內置函數,不過可以通過統計數據出現的頻率變相的去求眾數。
下面比較一下均值,中位數,眾數三個統計量有什麼優點和缺點 [圖片上傳失敗...(image-57f18-1586015539906)]
例子: 兩個公司的員工及薪資構成如下: A:經理1名,月薪100000;高級員工15名,月薪10000;普通員工20名,月薪7500 B:經理1名,月薪20000;高級員工20名,月薪11000;普通員工15名,月薪9000 請比較兩家公司的薪資水平。若只考慮薪資,你會選擇哪一家公司?
A 7500 B 11000
A 7500 B 11000</pre>
若從均值的角度考慮,明顯地A公司的平均月薪比B公司的高,但是A公司存在一個極端值,大大地拉高了A公司的均值,這時只從均值考慮明顯不太科學。從中位數和眾數來看,B公司的薪資水平比較高,若是一般員工,選擇B公司顯得更加合理。
比較下面兩組數據: A: 1 2 5 8 9 B: 3 4 5 6 7 兩組數據的均值都是5,但是你可以看出B組的數據與5更加接近。但是有描述集中趨勢的統計量不夠,需要有描述數據的離散程度的統計量。
極差 :最大值 - 最小值,簡單地描述數據的范圍大小。 A: 9 - 1 = 8 B: 7 - 3 = 4 同樣的5個數,A的極差比B的極差要大,所以也比B的要分散 但是只用極差這個衡量離散程度也存在不足 比如: A: 1 2 5 8 9 B: 1 4 5 6 9 兩組數據雖然極差都是相同的,但是B組數據整體分布上更加靠近5。
方差 :在統計學上,更常地是使用方差來描述數據的 離散程度 :數據離中心越遠,越離散。 方差越大,就代表這組數據越離散。
對於前面的數據 1 2 5 8 9,前面求的一組數據的方差是12.5。 將12.5於原始數據進行比較,可以看出12.5比原數據都大,這是否就能說明這一組數據十分離散呢? 其實方差與元數據的單位是不一樣的,這樣比較也是毫無意義的。如果原始數據的單位是m的話,那麼方差的單位就是m^2 為了保持單位的一致性,我們引入一個新的統計量:標准差 標准差:sqrt(var()), 有效地避免了因為單位的平方而引起的度量問題。 與方差一樣,標准差的值越大,表示數據越分散。 A: 1 2 5 8 9 B: 3 4 5 6 7
某班40個學生某次數學檢測的成績如下:
63,84,91,53,69,81,61,69,78,75,81,67,76,81,79,94,61,69,89,70,70,87,81,86,90,88,85,67,71,82,87,75,87,95,53,65,74,77 對於這一組數字,你能看出什麼呢? 或許先算一算平均值,中位數,或者眾數
或許算一算這組數據的方差或者標准差
但是即便是統計了上述的數據,我們還是對全班同學的分數分布,沒有一個全面的了解。 原始數據太雜亂無章,難以看出規律性,只依賴數字來描述集中趨勢與離散程度讓人難以對數據產生直觀地印象,這是我們就需要用到圖標來展示這些數字。
1.找出上面數據中的最大值和最小是,確定數據的范圍。
將成績排序後很容易得到最大值是95,最小值是53
2.整理數據,將數據按照成績分為幾個組。成績按照一般50-60,60-70,70-80,80-90,90-100這幾個分段來劃分(一般都分為5-10組),然後統計這幾個分段內部的頻數。 可以看到80-90這個分段的人數是最多的。 注意在繪制直方圖的時候,一定要知道是左閉右開還是左開右閉。 因為這個可能會直接影響到頻數的統計。
上圖就是:頻數直方圖。頻數作為縱坐標,成績作為橫坐標。通過直方圖我們可以對成績有一個非常直觀的印象。 除了頻數直方圖,還有一種直方圖:頻率直方圖。與頻數直方圖相比,頻率直方圖的縱坐標有所改變,使用了頻率/組距。 頻率=頻數/總數;組距就是分組的極差,這里的組距是10.
除了直方圖外,畫一個簡單的箱線圖也可以大致看出數據的分布。
想要看懂箱線圖,必須要學習一些箱線圖專業的名詞: 下四分位數:Q1,將所有的數據按照從小到大的順序排序,排在第25%位置的數字。 上四分位數:Q3,將所有的數據按照從小到大的順序排序,排在第75%位置的數字。 四分距:IQR,等於Q3-Q1,衡量數據離散程度的一個統計量。 異常點:小於Q1-1.5IQR或者大於Q3+1.5IQR的值。 (注意是1.5倍的IQR) 上邊緣:除異常點以外的數據中的最大值 下邊緣:除異常點以外的數據種的最小值
莖葉圖可以在保留全部數據信息的情況下,直觀地顯示出數據的分布情況。 左邊是莖,右邊是葉。 若將莖葉圖旋轉90度,則可以得到一個類似於直方圖的圖。跟直方圖一樣,也可以直觀地知道數據的分布情況。 並且可以保留所有的數據信息。 莖葉圖的畫法也非常的簡單: 將數據分為莖和葉兩部分,這里的莖是指十位上的數字,葉是指給上的數字。 將莖部份(十位)從小到大,從上到下寫出來 相對於各自的莖,將同一莖(十位)從小到大,從左往右寫出來。
但是莖葉圖也有缺陷,因為百位和十位同時畫在莖葉圖的時候,容易區分不開。同時也可能出現卻葉的情況。
以時間作為橫坐標,變數作為縱坐標,反映變數隨時間推移的變化趨勢。
顯示一段時間內的數據變化或者顯示各項之間的比較情況。
根據各項所佔百分比決定在餅圖中扇形的面積。簡單易懂,通俗明了。可以更加形象地看出各個項目所佔的比例大小。 適當的運用一些統計圖表,可以更生動形象的說明,不再只是純數字的枯燥描述。
學習鏈接: https://www.bilibili.com/video/BV1Ut411r7RG
④ 大數據十大經典演算法之k-means
大數據十大經典演算法之k-means
k均值演算法基本思想:
K均值演算法是基於質心的技術。它以K為輸入參數,把n個對象集合分為k個簇,使得簇內的相似度高,簇間的相似度低。
處理流程:
1、為每個聚類確定一個初始聚類中心,這樣就有k個初始聚類中心;
2、將樣本按照最小距離原則分配到最鄰近聚類
3、使用每個聚類中的樣本均值作為新的聚類中心
4、重復步驟2直到聚類中心不再變化
5、結束,得到K個聚類
劃分聚類方法對數據集進行聚類時的要點:
1、選定某種距離作為數據樣本間的相似性度量,通常選擇歐氏距離。
2、選擇平價聚類性能的准則函數
用誤差平方和准則函數來評價聚類性能。
3、相似度的計算分局一個簇中對象的平均值來進行
K均值演算法的優點:
如果變數很大,K均值比層次聚類的計算速度較快(如果K很小);
與層次聚類相比,K均值可以得到更緊密的簇,尤其是對於球狀簇;
對於大數據集,是可伸縮和高效率的;
演算法嘗試找出使平方誤差函數值最小的k個劃分。當結果簇是密集的,而簇與簇之間區別明顯的時候,效果較好。
K均值演算法缺點:
最後結果受初始值的影響。解決辦法是多次嘗試取不同的初始值。
可能發生距離簇中心m最近的樣本集為空的情況,因此m得不到更新。這是一個必須處理的問題,但我們忽略該問題。
不適合發現非凸面形狀的簇,並對雜訊和離群點數據較敏感,因為少量的這類數據能夠對均值產生較大的影響。
K均值演算法的改進:
樣本預處理。計算樣本對象量量之間的距離,篩掉與其他所有樣本那的距離和最大的m個對象。
初始聚類中心的選擇。選用簇中位置最靠近中心的對象,這樣可以避免孤立點的影響。
K均值演算法的變種:
K眾數(k-modes)演算法,針對分類屬性的度量和更新質心的問題而改進。
EM(期望最大化)演算法
k-prototype演算法
這種演算法不適合處理離散型屬性,但是對於連續型具有較好的聚類效果。
k均值演算法用途:
圖像分割;
衡量足球隊的水平;
下面給出代碼:
#include <iostream>
#include <vector>
//auther archersc
//JLU
namespace CS_LIB
{
using namespace std;
class Kmean
{
public:
//輸入格式
//數據數量N 維度D
//以下N行,每行D個數據
istream& loadData(istream& in);
//輸出格式
//聚類的數量CN
//中心維度CD
//CN行,每行CD個數據
//數據數量DN
//數據維度DD
//以下DN組,每組的第一行兩個數值DB, DDis
//第二行DD個數值
//DB表示改數據屬於一類,DDis表示距離改類的中心的距離
ostream& saveData(ostream& out);
//設置中心的數量
void setCenterCount(const size_t count);
size_t getCenterCount() const;
//times最大迭代次數, maxE ,E(t)表示第t次迭代後的平方誤差和,當|E(t+1) - E(t)| < maxE時終止
void clustering(size_t times, double maxE);
private:
double calDistance(vector<double>& v1, vector<double>& v2);
private:
vector< vector<double> > m_Data;
vector< vector<double> > m_Center;
vector<double> m_Distance;
vector<size_t> m_DataBelong;
vector<size_t> m_DataBelongCount;
};
}
#include "kmean.h"
#include <ctime>
#include <cmath>
#include <cstdlib>
//auther archersc
//JLU
namespace CS_LIB
{
template<class T>
void swap(T& a, T& b)
{
T c = a;
a = b;
b = c;
}
istream& Kmean::loadData(istream& in)
{
if (!in){
cout << "input error" << endl;
return in;
}
size_t dCount, dDim;
in >> dCount >> dDim;
m_Data.resize(dCount);
m_DataBelong.resize(dCount);
m_Distance.resize(dCount);
for (size_t i = 0; i < dCount; ++i){
m_Data[i].resize(dDim);
for (size_t j = 0; j < dDim; ++j){
in >> m_Data[i][j];
}
}
return in;
}
ostream& Kmean::saveData(ostream& out)
{
if (!out){
cout << "output error" << endl;
return out;
}
out << m_Center.size();
if (m_Center.size() > 0)
out << << m_Center[0].size();
else
out << << 0;
out << endl << endl;
for (size_t i = 0; i < m_Center.size(); ++i){
for (size_t j = 0; j < m_Center[i].size(); ++j){
out << m_Center[i][j] << ;
}
out << endl;
}
out << endl;
out << m_Data.size();
if (m_Data.size() > 0)
out << << m_Data[0].size();
else
out << << 0;
out << endl << endl;
for (size_t i = 0; i < m_Data.size(); ++i){
out << m_DataBelong[i] << << m_Distance[i] << endl;
for (size_t j = 0; j < m_Data[i].size(); ++j){
out << m_Data[i][j] << ;
}
out << endl << endl;
}
return out;
}
void Kmean::setCenterCount(const size_t count)
{
m_Center.resize(count);
m_DataBelongCount.resize(count);
}
size_t Kmean::getCenterCount() const
{
return m_Center.size();
}
void Kmean::clustering(size_t times, double maxE)
{
srand((unsigned int)time(NULL));
//隨機從m_Data中選取m_Center.size()個不同的樣本點作為初始中心。
size_t *pos = new size_t[m_Data.size()];
size_t i, j, t;
for (i = 0; i < m_Data.size(); ++i){
pos[i] = i;
}
for (i = 0; i < (m_Data.size() << 1); ++i){
size_t s1 = rand() % m_Data.size();
size_t s2 = rand() % m_Data.size();
swap(pos[s1], pos[s2]);
}
for (i = 0; i < m_Center.size(); ++i){
m_Center[i].resize(m_Data[pos[i]].size());
for (j = 0; j < m_Data[pos[i]].size(); ++j){
m_Center[i][j] = m_Data[pos[i]][j];
}
}
delete []pos;
double currE, lastE;
for (t = 0; t < times; ++t){
for (i = 0; i < m_Distance.size(); ++i)
m_Distance[i] = LONG_MAX;
for (i = 0; i < m_DataBelongCount.size(); ++i)
m_DataBelongCount[i] = 0;
currE = 0.0;
for (i = 0; i < m_Data.size(); ++i){
for (j = 0; j < m_Center.size(); ++j){
double dis = calDistance(m_Data[i], m_Center[j]);
if (dis < m_Distance[i]){
m_Distance[i] = dis;
m_DataBelong[i] = j;
}
}
currE += m_Distance[i];
m_DataBelongCount[m_DataBelong[i]]++;
}
cout << currE << endl;
if (t == 0 || fabs(currE - lastE) > maxE)
lastE = currE;
else
break;
for (i = 0; i < m_Center.size(); ++i){
for (j = 0; j < m_Center[i].size(); ++j)
m_Center[i][j] = 0.0;
}
for (i = 0; i < m_DataBelong.size(); ++i){
for (j = 0; j < m_Data[i].size(); ++j){
m_Center[m_DataBelong[i]][j] += m_Data[i][j] / m_DataBelongCount[m_DataBelong[i]];
}
}
}
}
double Kmean::calDistance(vector<double>& v1, vector<double>& v2)
{
double result = 0.0;
for (size_t i = 0; i < v1.size(); ++i){
result += (v1[i] - v2[i]) * (v1[i] - v2[i]);
}
return pow(result, 1.0 / v1.size());
//return sqrt(result);
}
}
#include <iostream>
#include <fstream>
#include "kmean.h"
using namespace std;
using namespace CS_LIB;
int main()
{
ifstream in("in.txt");
ofstream out("out.txt");
Kmean kmean;
kmean.loadData(in);
kmean.setCenterCount(4);
kmean.clustering(1000, 0.000001);
kmean.saveData(out);
return 0;
}
⑤ excel表格中怎樣計算某組數據的平均值
假設數據在A列
在B1單元格輸入公式
=AVERAGE(OFFSET(A$1:A$3,ROW()*3-3,))
下拉填充即可
⑥ 表格中多個跨行數值且需要添加條件怎麼求平均值
SUM(數值的集合) 結果為括弧內素所有數值加總
COUNTA(文字區域) 結果為文字單元格個數
AVERAGEIF(條件區間,條件值,求均值區域)
LEFT(一段文本/數字,左數所取文本/數字位數)
有時候工作中會遇到合並單元格的情況,雖然看起來很簡潔、漂亮,但如用於計算就很鬧心,拖拽向下填充都不好使。因為經常鬧心,所以要想辦法解決了他。准備了下面幾種常用計算的解決方法,表哥已經實踐過,用著很爽,再也不鬧心了。下面分情況討論哈!
合並單元格計算,分為兩種情況:
一是每個合並單元格包含相同數量的行數;一是合並單元格包含行數數量不一致。
文章將分為這兩種情況討論計算方法。
情況一:每個合並單元格包含相同數量的行數
由於合並單元格包含行數相同,進行匯總計算時,只要計算出第一行後,雙擊或拖拉向下填充均可。第一行E2/F2/G2分別使用函數SUM(),COUNT(),AVERAGE(),此處無需添加函數組合,直接使用即可。
表哥Tips:
如果習慣使用快捷鍵,則選定所有填充列,同時按下CTRL+D,即可快速全部填充。
此法用過一次就停不下來了,十分推薦!
情況二:合並單元格包含行數數量不一致
由於包含行數各不相同,若使用上述公式進行計算,必須在每個合並單元格公式中定位其對應的行號。表哥認為這種重復體力勞動不但很無趣,而且越大數據表越費滑鼠,按到手痛,最重要的是很有可能多算少算行,影響准確性。
因此,我們需要換個思路,用減法做匯總。
表哥知識點:
合並單元格的定位地址,默認等於合並單元格內的第一行第一列單元格的地址。如E列第一個合並單元格(標紅色)地址等於左上角單元格地址,即E2。
利用上述知識點,E、F、G三列的匯總思路為:
(1) E列合並加總:用D列當前行至最後一行的和,減掉E列當前行下一行至最後一行的和。
以合並單元格E2為例,公式為E2=SUM(D2:$D$13)-SUM(E8:$E$13)。
表哥Tips&知識點:
下面的合並單元格計算通過向下填充或拉公式是無效的,因為每個合並單元格所包含的行數不同,注意這里要用CTRL+ENTER填充。先選中准備計算的空白單元格,最後選中單元格E2,使其公式處於編輯狀態中(在公示欄看到閃動的游標),這次同時按下CTRL+ENTER完成空白合並單元格的填充。
(2) F列計數加總:用D列當前行至最後一行的個數之和,減掉F列當前行下一行至最後一行的和。
以合並單元格F2為例,公式為F2=COUNTA(D2:$D$13)-SUM(F8:$F$13)填充方法同上(1)
(3) G列以樣品編號分類求平均值:在必須保留數據表原格式情況下,利用通配符,改進方法一即可。這種方法利用LEFT&」*」函數作為關鍵字,進行判斷是否屬於同一樣品編號。
以單元格G2為例,公式為G2=AVERAGEIF($C$2:$C$13,LEFT(C2,4)&"*",$D$2:$D$13) 填充方法同上(1)