Python, ciência de dados e escolhas: parte 1

A série de 5 postagens para iniciantes é um remix do primeiro capítulo de um livro de 2015 chamado Clojure for Data Science. O autor do livro, Henry Garner, concordou gentilmente em usar os materiais do livro para este remix usando a linguagem Python.





O livro foi escrito como um convite à chamada "ciência de dados", que recebeu um forte impulso nos últimos anos devido à necessidade de processamento rápido e oportuno de grandes conjuntos de dados localmente e em um ambiente distribuído.





O material do livro é apresentado em uma linguagem viva e é apresentado em um estilo orientado a tarefas, principalmente com ênfase na análise de dados usando algoritmos e plataformas de computação apropriados, com explicações curtas e diretas fornecidas ao longo do caminho.





É injusto quando um excelente material educacional junta poeira não reclamada simplesmente pelo fato de ser implementado em uma linguagem bastante acadêmica, senão de elite, como a linguagem de programação funcional Clojure. Portanto, havia o desejo de contribuir com seus cinco copeques para disponibilizar o material do livro a um público mais amplo.





Três capítulos do livro foram adaptados para Python no ano seguinte após a publicação do livro, ou seja, em 2016. A publicação do remix do livro na Federação Russa não deu certo por vários motivos, mas um dos principais ficará claro ao final desta série de posts. No final da postagem final, você pode votar a favor ou contra a próxima série de postagens. Enquanto isso ...





A postagem 1 é sobre como preparar o ambiente e os dados.





Estatisticas

 É importante não quem vota, mas quem conta os votos





- Joseph Stalin





, , , . , , , « » « 80/20». . : .





, Python- pandas. , , , numpy . — 2010 . 2011 . — , .





SciPy: SciPy - , pandas , , NumPy .





. SciPy , NumPy , pandas -, - . R Python, REPL, . , .





. - , , :





import numpy as np
import scipy as sp
import pandas as pd
      
      



, Python . , , random , collections , Counter.





pandas , DataFrame



, .. , , . , pandas , . , , . pandas , , , , :





  • (.csv) (.tsv), read_csv







  • Excel (, .xls .xlsx), read_excel







  • ( , -, , JSON-, HTML- . .)





– Series, .. . , , .





Excel, read_excel



. — — , . . . , :





pd.read_excel('data/ch01/UK2010.xls')
      
      



, . load_uk



:





def load_uk():
    '''   '''
    return pd.read_excel('data/ch01/UK2010.xls') 
      
      



DataFrame



pandas, . , .





UK2010.xls . pandas read_excel



. — columns , (.



):





def ex_1_1():
    '''    '''
    return load_uk().columns
      
      



pandas:





Index(['Press Association Reference', 'Constituency Name', 'Region',
       'Election Year', 'Electorate', 'Votes', 'AC', 'AD', 'AGS', 'APNI',
       ...
       'UKIP', 'UPS', 'UV', 'VCCA', 'Vote', 'Wessex Reg', 'WRP', 'You',
       'Youth', 'YRDPL'],
       dtype='object', length=144)
      
      



, 144 . ; :





  • : , ( )





  • : ,





  • : ,





  • : ,





  • : ,





  • :





, , , . . , , 2010 ., Election Year.





pandas () () . , . :





def ex_1_2():
    '''   " "'''
    return load_uk()['Election Year']
      
      



:





0      2010.0
1      2010.0
2      2010.0
...
646    2010.0
647    2010.0
648    2010.0
649    2010.0
650       NaN
Name: Election Year, dtype: float64
      
      



. , . , , , unique . pandas , , Python. :





def ex_1_3():
    '''    " "  '''
    return load_uk()['Election Year'].unique()
      
      



[ 2010.    nan]
      
      



2010 , 2010 . , nan, . not a number, .. , , .





, , , , . Counter



Python collections



. , , .. :





def ex_1_4():
    '''    " " 
       (   )'''
    return Counter( load_uk()['Election Year'] )
      
      



Counter({nan: 1, 2010.0: 650}) 
      
      



, , 2010 . 650 . , , . , , nan , . , , .





, 80% . .





nan , . , pandas , . pandas.





pandas, , . , . , , :





def ex_1_5():
    '''    " " 
           (  )'''
    df = load_uk()
    return df[ df['Election Year'].isnull() ]
      
      



 









Press Association Reference





Constituency Name





Region





Election Year





Electorate





Votes





AC





AD





AGS





...





650





NaN





NaN





NaN





NaN





NaN





29687604





NaN





NaN





NaN





...





dt['Election Year'].isnull()



, , , False



, . SQL, , WHERE



.





ex_1_5, , ( ) NaN



. , Excel. . notnull()



, , NaN



:





    df = load_uk()
    return df[ df[ 'Election Year' ].notnull() ]
      
      



. , load_uk_scrubbed



:





def load_uk_scrubbed():
    '''     '''
    df = load_uk()
    return df[ df[ 'Election Year' ].notnull() ]
      
      



, : load_uk



load_uk_scrubbed



. 650 , .





, . — — , . , , , , , .





Os exemplos de código fonte para este post está no meu Github repo .





A próxima parte, Parte 2 , da série de postagens sobre Python, Ciência de Dados e Opções concentra-se em estatísticas descritivas, agrupamento de dados e distribuição normal. Todas essas informações servirão de base para uma análise mais aprofundada dos dados eleitorais.








All Articles