在Pandas中绘制多列(将字符串转换为float)

2024-09-29 23:22:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为这里给出的数据绘制“MJD”与“MULTIPLE-MJD”: https://www.dropbox.com/s/cicgc1eiwrz93tg/DR14Q_pruned_several3cols.csv?dl=0

import numpy as np
import pandas as pd

import matplotlib.pyplot as plt
import ast

filename = 'DR14Q_pruned_several3cols.csv'
datafile= path+filename
df = pd.read_csv(datafile)

df.plot.scatter(x='MJD', y='N_SPEC')
plt.show()

ser = df['MJD_DUPLICATE'].apply(ast.literal_eval).str[1]
df['MJD_DUPLICATE'] = pd.to_numeric(ser, errors='coerce')
df['MJD_DUPLICATE_NEW'] = pd.to_numeric(ser, errors='coerce')

df.plot.scatter(x='MJD', y='MJD_DUPLICATE')
plt.show()

这将生成一个绘图,但只有MJD_的一个值是重复的:

^{pr2}$

0 55214 155209号 ... 在

想法??在


Tags: csvimportdfaspltfilenameastser
1条回答
网友
1楼 · 发布于 2024-09-29 23:22:08

这里有两个问题:

  1. 告诉Pandas解析CSV中的元组。这里包括:Reading back tuples from a csv file with pandas
  2. 将元组转换为多行。这里包括:Getting a tuple in a Dafaframe into multiple rows

把这些放在一起,这里有一个解决问题的方法:

# Following https://stackoverflow.com/questions/23661583/reading-back-tuples-from-a-csv-file-with-pandas
import pandas as pd
import ast
df = pd.read_csv("DR14Q_pruned_several3cols.csv",
                 converters={"MJD_DUPLICATE": ast.literal_eval})

# Following https://stackoverflow.com/questions/39790830/getting-a-tuple-in-a-dafaframe-into-multiple-rows
df2 = pd.DataFrame(df.MJD_DUPLICATE.tolist(), index=df.MJD)
df3 = df2.stack().reset_index(level=1, drop=True)

# Now just plot!
df3.plot(marker='.', linestyle='none')

enter image description here

如果要删除0和-1值,则可以使用掩码:

^{pr2}$

enter image description here

相关问题 更多 >

    热门问题