本质上,我有一个 CSV 文件,其中包含比较速度和经过时间(以秒为单位)的数据。当我使用 Python 将这个作为数据类型的 CSV 文件导入到 Google Colab 上时,它就是一个对象。
此外,该CSV文件是通过游戏Universe Sandbox 2获得的,其功能是在游戏过程中分析一段时间内的某些特征后,上传用户想要获取的数据的CSV文件。就我而言,它是速度与经过的时间。
我的目标是隔离该数据中包含的浮点数并将它们插入到 numpy 数组中以进行进一步的图形分析。
以下是我获取的数据的文本代码示例:
"#Universe Sandbox - 34.0.3"
"#Sim=Solar System"
"#NumItems=1,StartTime=0,EndTime=284569725.789386,TimeSpan=85536000"
"#Id=4,Name=Earth"
"TimePassed (year),Body.RelativeSpeed (km/s)"
"6.33101469304518,29.56082498805"
"6.37894990067948,29.4462248148605"
"6.42980290356108,29.3587977892391"
"6.47565397173302,29.3165767083232"
为了简单起见,我将按照评论的建议结束文本代码。
下面是我尝试实现的库,包括
pandas.to_numeric
、apply()
、astype(float)
等
import matplotlib.pyplot as plt
import numpy as np
import scipy as sc
import pandas as pd
import re
import csv
如果有人可以更详细地帮助我,那么我将不胜感激。在过去的 1 1/2 周里我一直坚持这个问题,没有进一步的相关改进。
跳过初始行,例如:
df = pd.read_csv('your file', skiprows=4)
您的数据屏幕建议列名称位于第 5 行 然后你需要转换数据:
df = pd.read_csv('your file', skiprows=4, names=['data']) # data are str so transform them
df1 = pd.DataFrame(df['data'].apply(lambda x: x.split(',')).to_list(),columns=['x','y']).astype('float')
# split columns . make another df . convert data to float
更好的版本
df=pd.read_csv('your file', quoting=2,skiprows=4,names=['data'])
df1=df['data'].str.split(',', expand=True).astype('float64')
df1.columns=['x','y']
希望这有帮助
不要进行后期处理。使用
read_csv
一次性完成此操作:
from io import StringIO
import csv
import pandas as pd
content = r'''"#Universe Sandbox - 34.0.3"
"#Sim=Solar System"
"#NumItems=1,StartTime=0,EndTime=284569725.789386,TimeSpan=85536000"
"#Id=4,Name=Earth"
"TimePassed (year),Body.RelativeSpeed (km/s)"
"6.33101469304518,29.56082498805"
"6.37894990067948,29.4462248148605"
"6.42980290356108,29.3587977892391"
"6.47565397173302,29.3165767083232"
'''
with StringIO(content) as f:
# From now on, 'f' behaves like a file you'd have opened normally
df = pd.read_csv(
filepath_or_buffer=f,
skiprows=4,
sep=r'"|,',
usecols=(1, 2),
)
print(df)