In Python3 and pandas I have the dataframe:
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
The column "cnpj" are codes that can be repeated two or more times. The column "municipio" are names of cities
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
I want to know how many "cnpj" codes each "municipio" have, so I need to ignore the repeated "cnpj"
Please, should I use a pivot table? How?
EDITION WITH MORE DETAILS
For example, the "municipio" with the name "SAO JOAO DE MERITI" has 36 lines with CNPJ codes. But these codes can be repeated two or more times
When removing the repetitions of "cnpj", the "municipio" SAO JOAO DE MERITI has 20 codes of 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
I made the calculation for this city with other commands, but there are many cities to do it all:
36 lines:
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 unique lines
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
or
df = consolidado[(consolidado['municipio'] == 'SAO JOAO DE MERITI')]
a = len(df['cnpj'].value_counts())
a
20