2017-10-28 4 views
1

ブランドごとのデバイス数を調べる必要があります。実際には、スタック()。 Value_counts()メソッドは正しいですが、計算してはいけない列も計算されます。それは何とか両方の列を期待し、それらを返します。1列にスタックされたPandas 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() 

私はdevice_id秒でphone_brand秒を数える必要がある場合は、groupbyvalue_countssizeまたはcountを使用することができると思う:

#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

関連する問題