簡體   English   中英

Python:從 TXT 文件導入逗號分隔的數據

[英]Python: Import comma separated data from a TXT file

我用 Raspberry Pi Pico 構建了一個數據記錄器。 數據記錄器每六分鍾將溫度保存在 TXT 文件中。 我目前無法將 TXT 文件中的數據導入 Python。

數據如下所示: 1,20.5,2,21.0,3,21.0,4,21.0,5,21.0,6,21.0,7,21.0,...

因此,數據集包含兩個變量,它們用逗號分隔,一個遞增計數器和一個小數點后的溫度。 該數據集有大約 240 個測量值。

到目前為止,我已經嘗試了不同的方法來導入數據。 我已將 TXT 文件轉換為 CSV 文件,並嘗試使用 pandas 作為數據框導入:

temp_df = pd.read_csv('temp_data.csv', header=None)

這給了我一個 df 一個觀察值和一個三位數的變量。 我無法將數據集導入只有兩個變量和大約 240 個觀察值。

我還嘗試將數據作為列表導入:

import csv 
file = open("temp_data.csv", "r")
temp_list = list(csv.reader(file, delimiter=","))
file.close()
print(temp_list)

這導致錯誤: "TypeError: 'list' object is not callable".

--> 總而言之,我需要一個直接使用TXT文件並創建一個df的解決方案。 我對 Python 還是很陌生,希望能得到您的幫助! 提前致謝

你應該試試 pd.read_fwf。 它用於讀取固定寬度格式。

https://pandas.pydata.org/docs/reference/api/pandas.read_fwf.html

我會在這里使用 numpy。 Numpy 是具有很好功能的 python 列表。 它們允許您在 .npy 文件中保存/檢索列表。

例如。

import numpy as np
import pandas as pd

data = [1,20.5,2,21.0,3,21.0,4,21.0,5,21.0,6,21.0,7,21.0]
data_numpied = np.array(data,dtype=float)
np.save("numpy_data_storage.npy",data_numpied,allow_pickle = True)

# Restart / exit here

new_data = [42,42,1.0]
old_data = np.load("numpy_data_storage.npy",allow_pickle=True)
new_data2 = np.concatenate((old_data,new_data))

dataframe = pd.DataFrame(new_data2,columns = ["Temperature"])

但是,“.npy”文件不是人類可讀的。

給定輸入文件

1,20.5,2,21.0,3,21.0,4,21.0,5,21.0,6,21.0,7,21.0`

例如,試試這個:

import pandas as pd
df = pd.read_csv('temp_data.csv', header=None)
temp_df = pd.DataFrame(index=df.iloc[0,0::2].astype(int).values, data=dict(temp=df.iloc[0,1::2].values))
print(temp_df)

結果:

     temp
1  20.5
2  21.0
3  21.0
4  21.0
5  21.0
6  21.0
7  21.0

這有幫助嗎?

import pandas


data = dict()

with open("data.txt") as f:
    for line in f.readlines():
        splitted = line.split(",")
        data = {**data, **dict(zip(splitted[::2], splitted[1::2]))}

as_dataframe = pandas.DataFrame({"counter": data.keys(), "temperature": data.values()})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM