在Python3和pandas中我有数据帧:
import pandas as pd
consolidado = pd.read_csv("empresas_de_seguranca_consolidado_final - Página1.csv",sep=',',encoding = 'utf-8', converters={'cnpj': lambda x: str(x)})
consolidado.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1229 entries, 0 to 1228
Data columns (total 30 columns):
cnpj 1229 non-null object
CNAE_principal 1176 non-null object
nome_empresa 1229 non-null object
nome_empresa_maiuscula_minuscula 1004 non-null object
estado 1004 non-null object
indicador 1147 non-null float64
documento 1147 non-null object
qualificacao 1147 non-null object
socio 1153 non-null object
socio_maiuscula_minuscula 1008 non-null object
data_abertura 1229 non-null object
logradouro 1229 non-null object
numero_logradouro 1229 non-null object
complemento 689 non-null object
cep 1001 non-null object
bairro 1227 non-null object
municipio 1229 non-null object
regiao 531 non-null object
telefone 827 non-null object
email 368 non-null object
situacao 1229 non-null object
data_situacao_baixa 498 non-null object
capital_social 908 non-null object
Unnamed: 23 2 non-null object
cargo_relacionado_socio 200 non-null object
observacao 337 non-null object
situacao_funcional 173 non-null object
sede_situacao 144 non-null object
armas_autorizadas 1 non-null object
autorizacao_pf 249 non-null object
dtypes: float64(1), object(29)
memory usage: 288.1+ KB
列“cnpj”是可以重复两次或更多次的代码。 “municipio”栏是城市名称
colunas_selecionadas = ["cnpj", "municipio"]
consolidado[colunas_selecionadas].head(10)
cnpj municipio
0 33074659000141 RIO DE JANEIRO
1 33074659000141 RIO DE JANEIRO
2 31735806000151 SAO GONCALO
3 31735806000151 SAO GONCALO
4 31735806000151 SAO GONCALO
5 34148932000106 RIO DE JANEIRO
6 34148932000106 RIO DE JANEIRO
7 42146902000180 RIO DE JANEIRO
8 42146902000180 RIO DE JANEIRO
9 33746207000169 RIO DE JANEIRO
我想知道每个“municipio”有多少“cnpj”代码,所以我需要忽略重复的“cnpj”
拜托,我应该使用数据透视表吗?怎么样?
带有更多细节的版本
例如,名为“SAO JOAO DE MERITI”的“municipio”有36行CNPJ代码。但这些代码可以重复两次或更多次
当删除重复的“cnpj”时,“municipio”SAO JOAO DE MERITI有20个cnpj代码
df = consolidado[(consolidado['municipio'] == 'SAO JOAO DE MERITI')]
colunas_selecionadas = ["cnpj", "municipio"]
df[colunas_selecionadas]
cnpj municipio
41 40192148000190 SAO JOAO DE MERITI
121 32009789000138 SAO JOAO DE MERITI
122 32009789000138 SAO JOAO DE MERITI
168 02523153000149 SAO JOAO DE MERITI
169 02523153000149 SAO JOAO DE MERITI
173 02604326000153 SAO JOAO DE MERITI
174 02604326000153 SAO JOAO DE MERITI
175 02604326000153 SAO JOAO DE MERITI
280 04162974000122 SAO JOAO DE MERITI
281 04162974000122 SAO JOAO DE MERITI
292 04628016000102 SAO JOAO DE MERITI
293 04628016000102 SAO JOAO DE MERITI
498 08579209000163 SAO JOAO DE MERITI
499 08579209000163 SAO JOAO DE MERITI
526 09178711000125 SAO JOAO DE MERITI
527 09178711000125 SAO JOAO DE MERITI
558 10467705000177 SAO JOAO DE MERITI
684 12272376000134 SAO JOAO DE MERITI
687 12435911000120 SAO JOAO DE MERITI
751 13757756000121 SAO JOAO DE MERITI
752 13757756000121 SAO JOAO DE MERITI
818 14997691000154 SAO JOAO DE MERITI
819 14997691000154 SAO JOAO DE MERITI
843 17324127000169 SAO JOAO DE MERITI
844 17324127000169 SAO JOAO DE MERITI
845 17324127000169 SAO JOAO DE MERITI
846 17324127000169 SAO JOAO DE MERITI
1004 22530715000199 SAO JOAO DE MERITI
1006 22557478000150 SAO JOAO DE MERITI
1010 22717204000180 SAO JOAO DE MERITI
1027 22977308000124 SAO JOAO DE MERITI
1028 22977308000124 SAO JOAO DE MERITI
1116 25042072000122 SAO JOAO DE MERITI
1117 25042072000122 SAO JOAO DE MERITI
1194 27672020000165 SAO JOAO DE MERITI
1195 27672020000165 SAO JOAO DE MERITI
我用其他命令对这个城市进行了计算,但是有很多城市可以做到这一切:
36行:
df.groupby("municipio").count().reset_index()
municipio cnpj CNAE_principal nome_empresa nome_empresa_maiuscula_minuscula estado indicador documento qualificacao socio ... situacao data_situacao_baixa capital_social Unnamed: 23 cargo_relacionado_socio observacao situacao_funcional sede_situacao armas_autorizadas autorizacao_pf
0 SAO JOAO DE MERITI 36 36 36 30 30 30 30 30 30 ... 36 13 28 0 5 11 5 3 0 9
1 rows × 30 columns
20条独特的线条
df['cnpj'].value_counts()
17324127000169 4
02604326000153 3
32009789000138 2
04628016000102 2
22977308000124 2
14997691000154 2
25042072000122 2
09178711000125 2
04162974000122 2
08579209000163 2
27672020000165 2
13757756000121 2
02523153000149 2
12435911000120 1
22557478000150 1
22717204000180 1
12272376000134 1
22530715000199 1
10467705000177 1
40192148000190 1
Name: cnpj, dtype: int64
或
df = consolidado[(consolidado['municipio'] == 'SAO JOAO DE MERITI')]
a = len(df['cnpj'].value_counts())
a
20