почему я получаю неправильные длины столбцов, считываемых из файла CSV, python

#python #pandas #csv

#питон #панды #csv-файл

Вопрос:

Я пытаюсь прочитать некоторые данные (имена геномов) из файла ‘.csv’, я хочу найти длину каждого столбца, а затем построить гистограмму с этими данными, но каким-то образом мой скрипт показывает, что все столбцы имеют одинаковую длину, что неверно. У меня есть 4 столбца в моем файле, и в каждой ячейке столбца есть имя генома. Неправильное количество столбцов впоследствии также будет представлено в файле ‘.png’. Я удалил когда-либо значение ‘0’ и в моем файле, но проблема все равно не исчезла. Это мой код :

 import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

ca1 = []
casU3 =[]
casU5 =[]
casBig = []
df = pd.read_csv('statistics.csv')
ca1 = df['1 cassette']
casU3 = df['2-3 cassettes']
casU5 = df['4-5 cassettes']
casBig = df['More then 5 cassettes']
cas1 = len(list(filter(None, ca1)))
casUntil3 = len(list(filter(None, casU3)))
casUntil5 = len(list(filter(None, casU5)))
Bigcas = len(list(filter(None, casBig)))
genomes = cas1   casUntil3   casUntil5   Bigcas
height = [cas1,casUntil3,casUntil5,Bigcas]
bars = ('No.of genomes with only 1 cassette','2-3 cassettes','4-5 cassettes','more than 5 cassettes')
y_pos = np.arange(len(bars))
plt.bar(y_pos, height, tick_label = bars, width = 0.5, color=(0.1, 0.1, 0.1, 0.1),  edgecolor='blue')
plt.ylabel('Number of genomes') 
plt.title('Statistics over %s genomes with CRISPR immune system' %genomes) 
plt.savefig('./histogramCRISPR.png')
plt.show()
 

Код короткий и простой, но почему-то я не могу найти проблему. Пожалуйста, помогите.

Ответ №1:

Невозможно иметь не равные столбцы, либо столбцы будут иметь значения NaN, либо некоторые или другие значения.

пожалуйста, проверьте наличие значений NaN.

Спасибо.

Комментарии:

1. Спасибо, но я сделал, и ничего не изменилось.

Ответ №2:

Непонятно, что столбцы не переходят к столбцам, либо столбцы будут иметь значения NaN, либо несколько или другие значения. Удалите значения Nan с помощью кода:

 df.drop.isna()
 

Вы можете увидеть NAN, который является кодом:

 df.isnull().sum()
 

`