Чтение csv в pandas фрейм данных и pandas и все столбцы, кроме самого первого, удаляются - PullRequest
0 голосов
/ 04 августа 2020

Я очищаю набор данных и хочу заменить выброс -9999.9 на медианное значение указанного столбца c. Каждый столбец представляет месяц, и это то, что я написал для устранения этого выброса. Когда я закончил замену выброса медианой, я объединяю переформатированные столбцы и столбцы, которые я оставил нетронутыми. См. Код ниже:

**import pandas as pd 
import numpy as np
#Abottsford British Columbia
abottsfordbc = pd.read_csv("/Users/name/Desktop/Python_Scripts/wind_classifier/data_sets/canadian_windspeeds/abottsford_bc.csv", engine = 'python', sep = ',')
df_abottsfordbc = pd.DataFrame(abottsfordbc)
dataframe_labels = df_abottsfordbc[["Jan","Mar","Apr","May","Jun","Jul","Aug","Sep","Nov","Dec","Annual","Winter","Spring","Summer","Autumn"]]
for i in df_abottsfordbc["Feb"]:
    if i == -9999.9:
        column_median = df_abottsfordbc["Feb"].median()
        outlier_convert = df_abottsfordbc["Feb"].replace(to_replace = [-9999.9], value = [0])
        zero_to_medianFeb = outlier_convert.replace(to_replace = [0], value = [column_median])
for i in dataframe_labels["Oct"]:
    if i == -9999.9:
        column_median = df_abottsfordbc["Oct"].median()
        outlier_convert = df_abottsfordbc["Oct"].replace(to_replace = [-9999.9], value = [0])
        zero_to_medianOct = outlier_convert.replace(to_replace = [0], value = [column_median])
abottsford_bc_concat = pd.concat([dataframe_labels, zero_to_medianFeb, zero_to_medianOct], axis = 1)**

Мне интересно, может ли кто-нибудь помочь мне с этой проблемой, с которой я столкнулся. Я недавно загрузил данные с компьютера aa Windows 10 на Ma c под управлением macOS Catalina, и я не совсем уверен, почему это нормально работает на Windows 10, но не на MacOS, я использую Spyder версии 4.1.4 и Python 3.8 на моем Ма c. Я не уверен, почему моя Spyder IDE может интерпретировать данные и скрипт на Windows10, но не на macOS Catalina. Я проверил файл .csv, который я читаю, и он совершенно нормален в Microsoft Excel. Все имена столбцов находятся там, где они должны быть. Однако, когда я распечатываю фрейм данных, я получаю следующее:

**

print(abottsfordbc)
                                                                                     Year
1953 16.4 9.5  11.9 10.0 10.0 8.1  8.9  8.6 9.2  8.6  12.7 11.9 10.5 12.9 10.6 8.6   10.2
1954 17.9 16.5 12.6 13.5 10.8 10.5 8.9  7.9 7.9  11.6 11.8 13.1 11.9 15.4 12.3 9.1   10.4
1955 8.6  10.2 11.5 11.2 8.8  7.2  7.1  6.6 5.9  8.7  14.3 11.1 9.3  10.7 10.5 7.0    9.6
1956 10.5 10.0 16.1 13.6 12.6 13.4 10.8 9.9 11.4 14.0 11.1 18.4 12.7 10.5 14.1 11.4  12.2
1957 17.9 18.4 14.9 13.0 10.7 12.4 12.1 9.4 9.5  14.8 11.1 18.4 13.6 18.3 12.9 11.3  11.8
                                                                                  ...
2010 10.1 9.0  10.9 13.2 10.3 9.5  9.8  8.5 8.5  7.9  12.3 10.9 10.1 9.4  11.4 9.3    9.6
2011 10.2 14.5 13.2 11.7 9.0  10.4 9.3  7.8 8.0  7.4  10.5 7.7  10.0 11.9 11.3 9.2    8.6
2012 12.9 11.1 13.2 9.8  10.4 9.6  9.2  7.8 6.6  10.6 9.7  10.2 10.1 10.6 11.2 8.8    9.0
2013 7.5  10.4 10.6 11.7 9.0  9.2  10.8 8.4 9.1  7.9  9.2  11.4 9.6  9.3  10.5 9.5    8.7
2014 9.9  17.5 11.5 11.4 9.6  10.3 10.1 8.6 8.7  10.0 13.4 11.4 11.0 12.9 10.8 9.7   10.7
[62 rows x 1 columns]

**

Код ошибки, который я получаю, можно найти ниже, что имеет смысл потому что, когда я распечатываю фреймворк, я вижу, что «Фев» не является столбцом. Кто-нибудь знает, почему мой read_csv () не читает мой файл .csv должным образом? Вместо того, чтобы интерпретировать год как последний столбец вместо первого, а остальные столбцы оставлять пустыми? Когда я открываю файл .csv в Microsoft Excel, он правильно отформатирован и сохраняется как файл .csv UTF-8. Любая помощь будет принята с благодарностью.

    runfile('/Users/name/Desktop/Python_Scripts/wind_classifier/cleanwind.py', wdir='/Users/name/Desktop/Python_Scripts/wind_classifier')
    Traceback (most recent call last):
    
      File "/opt/anaconda3/lib/python3.8/site-packages/pandas/core/indexes/base.py", line 2646, in get_loc
        return self._engine.get_loc(key)
    
      File "pandas/_libs/index.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc
    
      File "pandas/_libs/index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
    
      File "pandas/_libs/hashtable_class_helper.pxi", line 1619, in pandas._libs.hashtable.PyObjectHashTable.get_item
    
      File "pandas/_libs/hashtable_class_helper.pxi", line 1627, in pandas._libs.hashtable.PyObjectHashTable.get_item
    
    KeyError: 'Feb'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "/Users/bryanekeh/Desktop/Python_Scripts/wind_classifier/cleanwind.py", line 11, in <module>
    for i in abottsfordbc["Feb"]:

  File "/opt/anaconda3/lib/python3.8/site-packages/pandas/core/frame.py", line 2800, in __getitem__
    indexer = self.columns.get_loc(key)

  File "/opt/anaconda3/lib/python3.8/site-packages/pandas/core/indexes/base.py", line 2648, in get_loc
    return self._engine.get_loc(self._maybe_cast_indexer(key))

  File "pandas/_libs/index.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc

  File "pandas/_libs/index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc

  File "pandas/_libs/hashtable_class_helper.pxi", line 1619, in pandas._libs.hashtable.PyObjectHashTable.get_item

  File "pandas/_libs/hashtable_class_helper.pxi", line 1627, in pandas._libs.hashtable.PyObjectHashTable.get_item

KeyError: 'Feb'

1 Ответ

0 голосов
/ 04 августа 2020

Как узнать, что файл не читается должным образом? Вы печатаете его до или после операций с столбцами?

А для вашего кода

  1. Вам не нужно приводить pd.read_csv() к pd.DataFrame. Это уже объект DataFrame.

  2. Не повторять значения столбца. В pandas почти всегда есть способ получше. В этом случае попробуйте

df_abottsfordbc["Feb"] = df_abottsfordbc["Feb"].replace(-9999, df_abottsfordbc["Feb"].median()

и аналогичный процесс для df_abottsfordbc["Oct"]. Кроме того, вам не нужно будет выполнять concat.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...