Excel mit Python

Wenn Sie etwas auf einem PC tun, ist die Verwendung von Excel unvermeidlich. Imadoki, es kann Leute geben, die Lotus 1-2-3 verwenden und sagen "Ich hasse Microsoft". Einige Messdaten usw. werden in der Excel-Tabelle gespeichert. Wenn dies der Fall ist, ist es besser, die Daten aus der Excel-Datei lesen zu können.

Ist es Ikan in CSV?

Wenn Sie es sich leisten können, die Datei in Excel zu öffnen und im CSV- oder tabulatorgetrennten Textformat zu speichern, ist das natürlich in Ordnung. Aber manchmal passiert es. Die Ergebnisse des 30-Tage-Experiments sind 30 Dateien. Wiederholen Sie in diesem Fall den Vorgang, bei dem jede Datei einzeln geöffnet und erneut in CSV gespeichert wird, oder schreiben Sie Excel VBA, das den Vorgang automatisch ausführt. Hmm, es ist gut, Excel ist Excel ..

Ich kann das nicht sagen, suchen Sie also nach einem Paket, das von conda bereitgestellte Excel-Dateien lesen und schreiben kann. In Zeiten wie diesen bleibt nichts anderes übrig, als zu googeln. Es scheint ein Paket namens xlrd zu geben.

% anaconda search -t conda xlrd
Using Anaconda API: https://api.anaconda.org/
Run 'anaconda show <USER/PACKAGE>' to get more details:
Packages:
     Name                      |  Version | Package Types   | Platforms
     ------------------------- |   ------ | --------------- | ---------------
     RMG/xlrd                  |    0.9.4 | conda           | linux-64, win-32, win-64, linux-32, osx-64
     RahulJain/xlrd            |    1.0.0 | conda           | win-64
     aetrial/xlrd              |          | conda           | linux-64, osx-64
     anaconda/xlrd             |    1.0.0 | conda           | linux-64, win-32, win-64, linux-32, osx-64
     auto/xlrd                 |    0.8.0 | conda           | linux-64
                                          : http://www.python-excel.org/
     jetztcast/xlrd            |    0.9.3 | conda           | linux-64, osx-64
                                          : Library for developers to extract data from Microsoft Excel (tm) spreadsheet files
Found 6 packages
% anaconda show anaconda/xlrd
Using Anaconda API: https://api.anaconda.org/
Name:    xlrd
Summary:
Access:  public
Package Types:  conda
Versions:
   + 0.9.2
   + 0.9.4
   + 0.9.3
   + 0.9.0
   + 0.9.1
   + 1.0.0

To install this package with conda run:
     conda install --channel https://conda.anaconda.org/anaconda xlrd

Lesen Sie Daten aus einer Excel-Tabelle

Wenn ich alleine arbeiten und in Kyoto leben sollte, wurde oft gesagt, dass "Kyoto heiß sein würde", deshalb habe ich die täglichen Höchsttemperaturdaten für Tokio und Kyoto im Juli 2016 von der Meteorologischen Agentur zur Überprüfung heruntergeladen. Ich habe versucht, es in Excel zusammenzufassen.

20160831001.jpg

In Kyoto ist es heißer, wenn man es sich nur ansieht. Sie müssen es nicht mit Python analysieren. Aber werfen wir einen zweiten Blick darauf und berechnen die Durchschnittstemperatur in beiden Städten.

import xlrd
import os.path
import numpy as np
xlfile = "test.xlsx"
if os.path.exists(xlfile):
    xls = xlrd.open_workbook(xlfile)
    sheet1 = xls.sheet_by_index(0)
    nrows = sheet1.nrows-1
    ncols = sheet1.ncols 
    data = np.zeros(ncols*nrows).reshape((nrows, ncols))
    for r in range(1, nrows+1):
        for c in range(0, ncols):
            data[r-1,c] = sheet1.cell(r,c).value
    tokyo = data[:,1].mean()
    kyoto = data[:,2].mean()
    msg = "Tokyo(mean): %.2f\nKyoto(mean): %.2f" % (tokyo, kyoto)
    print(msg)

Erstellen Sie mit np.zeros () ein Array mit 0 Inhalten und wandeln Sie es mit reshape () in ein zweidimensionales Array um. Da die erste Zeile von Excel die Kopfzeile ist, subtrahieren Sie 1 vom Wert von sheet1.nrows. Es ist ein numpy-Array. Wenn Sie also den Durchschnitt ermitteln möchten, meinen Sie einfach (). Wenn man sich die Ergebnisse ansieht, ist es in Kyoto noch heißer.

Prüfung

Ist es übrigens in Ordnung zu entscheiden, dass Kyoto wirklich heiß ist, wenn man nur die Durchschnittswerte vergleicht? Schließlich ist es besser zu testen, ob hier ein statistisch signifikanter Unterschied besteht.

Das Testen der Differenz zwischen den Mittelwerten ist mit den Statistiken von scipy einfach.

import xlrd
import os.path
import numpy as np
from scipy import stats
xlfile = "test.xlsx"
if os.path.exists(xlfile):
    xls = xlrd.open_workbook(xlfile)
    sheet1 = xls.sheet_by_index(0)
    nrows = sheet1.nrows-1
    ncols = sheet1.ncols
    data = np.zeros(ncols*nrows).reshape((nrows, ncols))
    for r in range(1, nrows):
        for c in range(0, ncols):
            data[r-1,c] = sheet1.cell(r,c).value
    tokyo = data[:,1]
    kyoto = data[:,2]
    t,p = stats.ttest_ind(tokyo, kyoto, equal_var=False))
    msg = "p-value: %.5f" % p
    print(msg)

Bei der Temperatur in Tokio und Kyoto handelt es sich beim Testen der Hypothese, dass "Tokio niedriger ist", um einen einseitigen Test. Die Option, anzugeben, dass es sich um einen einseitigen Test handelt, besteht jedoch in der Methode stats.ttest_ind (). Es scheint nicht zu existieren. Daher ist es in diesem Fall eine Alternative, indem gezeigt wird, dass der t-Wert ein negativer Wert ist und der p-Wert 0,025 oder weniger beträgt.

Als ich es tatsächlich versuchte, wurde es wie folgt.

t: -4.09874
p-value: 0.00014

Diagrammzeichnung

Ich habe die Daten aus der Excel-Tabelle gelesen, also machen wir ein Diagramm. In R wird ggplot2 verwendet, in Python in der Anaconda-Umgebung kann jedoch matplotlib verwendet werden.

import xlrd
import os.path
import pandas as pd
import numpy as np
from scipy import stats
from matplotlib import pyplot as plt
%matplotlib inline 

xlfile = "test.xlsx"
if os.path.exists(xlfile):
    xls = xlrd.open_workbook(xlfile)
    sheet1 = xls.sheet_by_index(0)
    nrows = sheet1.nrows - 1
    ncols = sheet1.ncols
    data = np.zeros(ncols*nrows).reshape((nrows, ncols))
    date = []
    for r in range(1, nrows+1):
        for c in range(0, ncols):
            if c==0:
                d =  xlrd.xldate.xldate_as_datetime(sheet1.cell(r,c).value, xls.datemode)
                date.append(d)
            else:
                data[r-1,c] = sheet1.cell(r,c).value

    tokyo = data[:,1]
    kyoto = data[:,2]
    
    plt.plot(date, tokyo, label="Tokyo")
    plt.plot(date, kyoto, label="Kyoto")
    plt.legend()
    plt.show()

Beim Zeichnen eines Liniendiagramms möchte ich das aus Excel gelesene Datum für die X-Achse verwenden. Wenn das Datum 2016/07/01 in der Excel-Datei angezeigt wird, sind die Daten "41090". Wenn ich mir das anschaue, denke ich nicht, dass es 7/1 ist, also werde ich es konvertieren. Das ist die folgende Zeile.

d =  xlrd.xldate.xldate_as_datetime(sheet1.cell(r,c).value, xls.datemode)

Jetzt wird es in den Datums- / Uhrzeittyp konvertiert und "41090" wird zu "2016-07-01 00:00:00". Also, date.append (d) eins nach dem anderen in der Liste, initialisiert durch date = [].

Übrigens können Sie beim Drucken () der Variablen d, wenn Sie d.strftime („% m /% d“) verwenden, 7/1 nur für den Monat / Tag drucken. Ich kann es tun, aber wenn ich die konvertierte Zeichenfolge an das Listendatum anhänge, tritt bei plt.plot () ein Fehler auf. Was soll ich also tun?

Deshalb sieht die Grafik, die ich zeichnen konnte, so aus. Immerhin ist die X-Achse schwer zu lesen. Ich möchte etwas dagegen tun. Wenn Sie sich dieses Diagramm ansehen, können Sie sehen, dass es in Kyoto heißer ist, ohne es testen zu müssen (dh die Visualisierung der Daten ist wichtig).

20160831003.png

Dieser Zeitcode und Daten

Recommended Posts

Excel mit Python
Behandle Excel mit Python
Betreiben Sie Excel mit Python (1)
Betreiben Sie Excel mit Python (2)
Betreiben Sie Excel mit Python Open Pyxl
Solver> Link> Lösen Sie Excel Solver mit Python
Statistik mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Lass uns mit Python mit Python spielen [Anfänger]
Python beginnt mit ()
mit Syntax (Python)
Behandeln Sie Excel-CSV-Dateien mit Python
Bingo mit Python
Zundokokiyoshi mit Python
Mikrocomputer mit Python
Mit Python besetzen
Zeichnen Sie Nozomi Sasaki in Excel mit Python
Konvertieren Sie Excel-Daten mit Python in JSON
[Easy Python] Lesen von Excel-Dateien mit openpyxl
Erstellen Sie eine Excel-Datei mit Python + Ähnlichkeitsmatrix
Excel-Tabellenerstellung mit Python [Fortschrittsverwaltungstabelle]
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Führen Sie Python mit VBA aus
Umgang mit Yaml mit Python
Serielle Kommunikation mit Python
Python lernen mit ChemTHEATER 05-1
Lerne Python mit ChemTHEATER
Führen Sie prepDE.py mit python3 aus
1.1 Erste Schritte mit Python
Tweets mit Python sammeln
Binarisierung mit OpenCV / Python
3. 3. KI-Programmierung mit Python
Kernel-Methode mit Python
Nicht blockierend mit Python + uWSGI
Scraping mit Python + PhantomJS
Tweets mit Python posten
Fahren Sie WebDriver mit Python
Verwenden Sie Mecab mit Python 3
[Python] Mit CGIHTTPServer umleiten
Sprachanalyse mit Python
Denken Sie an Yaml mit Python
Kinesis mit Python betreiben
Erste Schritte mit Python
Verwenden Sie DynamoDB mit Python