Python Pandas не распознает числа при чтении из файла .txt

#python #c #pandas

#python #c #pandas

Вопрос:

Я использую Pandas для записи в таблицу из файла .txt, созданного другой программой на C . Python или Pandas не распознают их как числа, и я действительно не знаю, что делать. Вот код Python:

 df = pd.read_csv(r'C:UsersromeaDesktopInżynierkaER_etap_5Metropolis_average_path_6_p_0.010000_nodes_100.txt', sep='t', engine='python', header=None)
df.columns = df.iloc[0]
df = df.drop([0])
df.head()
  

[![Заголовок фрейма данных][1]][1]

И вот это, когда я пытаюсь построить его:

 plt.scatter(df["iteracja"], df["variancja"])
plt.show()
  

График

Проверьте, что значения по оси y являются бессмысленными.
Вот файл .txt. Разделение с помощью » t» и новой строки с помощью std::endl из C :

 iteracja    krawedzie   srednia_chwil   variancja
0   10000   10000   0.138686
100 2843.07 2843.07 0.991797
200 16.0296 16.0296 0.263918
300 4.55257 4.55257 0.235237
400 4.5834  4.5834  0.217816
500 4.68072 4.68072 0.167809
600 4.78377 4.78377 0.129301
700 4.83168 4.83168 0.109151
800 4.8534  4.8534  0.0963009
900 5.66296 5.66296 0.0710574
1000    5.96965 5.96965 0.0485687
  

И вот часть кода C , которая его генерирует:

 myfile<<"iteracja"<<"t"<<"krawedzie"<<"t"<<"srednia_chwil"<<"t"<<"variancja"<<endl;
        std::vector <float> temp_curent;
        std::vector <float> temp_edges;
        for(int i = 0; i<break_counter; i  )
        {
            temp_curent.push_back(current_average_array[i]);
            temp_edges.push_back(edge_array[i]);
            if (i % 100 == 0)
            {
                double suma = 0;
                double suma_edges = 0;
                for(int j = 0; j<temp_curent.size(); j  )
                {
                    suma_edges  = temp_curent[j];
                    suma  = temp_curent[j];
                }
                suma /= 100;
                suma_edges /= 100;
                cout<<i<<"t"<<suma_edges<<"t"<<suma<<"t"<<variance_fractorial[(int)((i/100))]<<endl;
                myfile<<i<<"t"<<suma_edges<<"t"<<suma<<"t"<<variance_fractorial[(int)((i/100))]<<endl;
                temp_curent.clear();
                temp_edges.clear();
            }
        }
        myfile.close();
        return break_counter;
  

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

1. Пожалуйста, отправьте образцы данных в виде текста и, возможно, ссылку на текстовый файл. Из кода C это выглядит так, что оно заключено в кавычки.

2. вы уверены, что значения не заключены в кавычки?

3. Какие значения? В коде C я уверен, что это не так

Ответ №1:

 import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv(r'your_file_here.txt', sep='t', header=0)
plt.scatter(df["iteracja"], df["variancja"])
plt.show()
  

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

1. Это работает как шарм. Спасибо, добрый незнакомец. Не могли бы вы сказать мне, почему это имеет значение?

2. Я получал ошибки с вашим кодом (а не с неправильной диаграммой) и просто написал его так, как хотел бы — это работает