2017-11-27 17 views
0

Ich bin relativ neu in Python, und ich versuche, die Anzahl der leeren Zellen in einem Excel-Blatt mit Daten gefüllt zu zählen. Um das Programm zu testen, habe ich einige Werte wurden gelöscht, so dass die Zellen leer sind: mein Code unterPython: Anzahl der leeren Zellen in Excel Datenblatt

import xlrd 
import pandas as pd 
import openpyxl 
df = pd.read_excel('5train.xls') 

workbook = xlrd.open_workbook('5train.xls') 
worksheet = workbook.sheet_by_name('5train') 

#Task starts here 
empty = 0 
row_data = worksheet.nrows - 1 
row = 0 
cell = 0 
while row < row_data: 
    if worksheet.cell(0, 0).value == xlrd.empty_cell.value: 
     empty += 1 
     cell += 1 
    else: 
     pass 
    row += 1 
print("Number of empty cells in data sheet:", empty) 

Allerdings wird der Code konsequent „Anzahl der leeren Zellen im Datenblatt: 0“ drucken egal wie viele Zellen ich leer habe. Irgendwelche Zeiger? Vielen Dank!

+0

Ein Excel-Blatt enthält 1,04 Millionen Zeilen und Hunderte von Spalten. Sie möchten jede leere Zelle zählen? Oder haben Sie Ihre Daten in einem Tabellenformat und möchten Leerzeichen innerhalb dieses Tabellenbereichs zählen? –

Antwort

0

Sie können über jede Zeile bis zur letzten Zeile, die Daten enthält, iterieren, indem Sie .get_rows() verwenden. Zählen Sie dann die leeren Zellen, indem Sie den Wert jeder Zelle in jeder Zeile überprüfen.

workbook = xlrd.open_workbook('5train.xls') 
worksheet = workbook.sheet_by_name('5train') 

empty_cells = 0 
for row in worksheet.get_rows(): 
    empty_cells += sum(0 if c.value else 1 for c in row) 

Wenn Sie es ein Einzeiler machen möchten, können Sie verwenden:

empty_cells = sum(0 if c.value else 1 for row in worksheet.get_rows() for c in row) 
1

Sie immer die gleiche Zelle in der Schleife überprüfen:

if worksheet.cell(0, 0).value == xlrd.empty_cell.value: 

Nur die Zelle in Zeile 0 und Spalte 0 wird geprüft, wenn sie leer ist.

+0

Wie kann es behoben werden? – wwii

Verwandte Themen