2017-10-28 72 views
1

我想知道每個品牌的設備數量。其實,堆棧()。 Value_counts()方法是正確的,但它也計算它不應該計算的列。它以某種方式期待這兩列並返回它們。大熊貓value_counts()僅在一列上堆疊

import pandas as pd 
from sqlalchemy import create_engine # database connection 

disk_engine = create_engine('sqlite://gender-age-train.db') 

phones = pd.read_sql_query('SELECT device_id, phone_brand FROM gender_age_brand_train', disk_engine) 

print phones.stack().value_counts() 

輸出:

小米      17336 
三星      13706 
華爲      13001 
OPPO      5802 
vivo      5658 
魅族      4710 
酷派      3349 
聯想      2695 
金立      1124 
HTC      1015 
中興      861 
樂視      760 
索尼      717 
努比亞      484 
LG      333 
中國移動      275 
TCL      222 
朵唯      213 
海信      204 
優米      192 
錘子      191 
一加      174 
語信      170 
天語      159 
奇酷      140 
摩托羅拉      103 
酷比       67 
酷比魔方      64 
華碩       59 
美圖       57 
         ... 
-8865310564646824401  1 
8985202332281820721   1 
-5322234356626416887  1 
880050530112722484   1 
-4671567474474098396  1 
3635321738417886774   1 
-632936314824337863   1 
-1422720271682152902  1 
-2873804282202335925  1 
3654370499756512829   1 
-6683814535312746946  1 
-339536654867409365   1 
-6550235263773354456  1 
-576216080894831095   1 
7567434598341760535   1 
8744410044312016395   1 
8050431495959696911   1 
-1419919517746506224  1 
1300102583374534161   1 
7324848588154164755   1 
1622918197035226644   1 
4016294717867992903   1 
-4702856771680607231  1 
-2474276408301741600  1 
4390245982607697285   1 
8161044391542216225   1 
-6548201155232442846  1 
-2950848600346765789  1 
2164451555009058340   1 
1586233736345944064   1 
Length: 74765, dtype: int64 

它實際上應該只計算與品牌列。所以停下來......然後來。我嘗試了很多,但沒有成功。

回答

0

您可以使用:

#extract only column for count from db 
phones = pd.read_sql_query('SELECT phone_brand FROM gender_age_brand_train', disk_engine) 
#select only column for count from df 
print phones['phone_brand'].value_counts() 

我認爲你可以使用groupbyvalue_countssizecount如果需要通過device_id count:伯爵phone_brand S:

#count and sort values 
print phones.groupby('device_id')['phone_brand'].value_counts().reset_index() 

或者:

#count also NaNs and not sort 
print phones.groupby(['device_id','phone_brand']).size().reset_index() 

或者:

#NOT count NaNs and not sort 
print phones.groupby(['device_id','phone_brand']).count().reset_index() 
+0

你已經做了很多的變化和改進的,我非常感謝你親切:)但你的第一個答案,幫助我很遠。我調整了查詢​​:SELECT phone_brand FROM gender_age_brand_train;然後像這樣應用它:phones ['phone_brand']。 value_counts() 如果你喜歡,你也可以再次添加這個版本,對其他人會有幫助。非常感謝! –

+0

歡迎您!當然,我把它加回來。 – jezrael