Python 值_counts(),堆栈仅在一列上

Python 值_counts(),堆栈仅在一列上,python,sql,pandas,dataframe,Python,Sql,Pandas,Dataframe,我想知道每个品牌的设备数量。实际上,堆栈()。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

我想知道每个品牌的设备数量。实际上,堆栈()。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
它实际上应该只计算带有品牌的列。所以停在哪里。。。那就来吧。我尝试了很多,但没有成功。

您可以使用:

#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\u id
s来计算手机品牌的数量:

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

或:

您可以使用:

#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\u id
s来计算手机品牌的数量:

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

或:


你做了很多改变和改进,我非常真诚地感谢你:)但是你的第一个回答,对我帮助很大。我修改了这个查询:从性别、年龄、品牌、火车中选择手机品牌;然后像这样应用它:手机['phone_brand']。value_counts(),如果您愿意,还可以再次添加此版本,这对其他人很有帮助。非常感谢!你做了很多改变和改进,我非常真诚地感谢你:)但是你的第一个回答,对我帮助很大。我修改了这个查询:从性别、年龄、品牌、火车中选择手机品牌;然后像这样应用它:手机['phone_brand']。value_counts(),如果您愿意,还可以再次添加此版本,这对其他人很有帮助。非常感谢!