Python 从.txt文件创建带有熊猫的数据帧
我在使用pandas将.txt文件转换为浮点值的数据帧时遇到问题。我需要创建一个包含两列数据的散点图,但我一直收到错误“TypeError:Empty'DataFrame:无需绘制的数字数据”,因此我认为它将数据作为字符串读取 我正在读取的文件是9000行。我在开头跳过了几行,因为它们只是文本。当我只运行代码的第一行时,它似乎创建了一个合法的数据帧,但随后尝试绘制散点图并没有成功。列的名称正好位于文件中数据值的前面。我想画的两个散点图是“Xpos”和“Ypos” 我的代码非常简单:Python 从.txt文件创建带有熊猫的数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我在使用pandas将.txt文件转换为浮点值的数据帧时遇到问题。我需要创建一个包含两列数据的散点图,但我一直收到错误“TypeError:Empty'DataFrame:无需绘制的数字数据”,因此我认为它将数据作为字符串读取 我正在读取的文件是9000行。我在开头跳过了几行,因为它们只是文本。当我只运行代码的第一行时,它似乎创建了一个合法的数据帧,但随后尝试绘制散点图并没有成功。列的名称正好位于文件中数据值的前面。我想画的两个散点图是“Xpos”和“Ypos” 我的代码非常简单: df = p
df = pd.read_csv('data.txt', sep='|', skiprows=44)
df.plot(x='Xpos', y='Ypos')
下面是数据帧前20行的示例
注意HHVA Xpos YPO。。。B-V u_B-V e_Vmag e_B-V
2 10001 47.22 68.87 ... 0.731 0.010 0.010
3 10002 62.38 38.89 ... 0.921 0.010 0.010
4 10003 207.27 371.05 ... 0.884 0.010 0.010
5 10004 146.39 208.01 ... 0.791 0.010 0.010
6 10005 189.39 294.75 ... 1.392 0.011 0.016
7 * 10006 205.68 475.89 ... 0.645 0.013 0.015
8 * 10007 273.94 244.41 ... 0.546 0.004 0.009
9 * 10008 159.47 126.65 ... 0.593 0.009 0.012
10 * 10009 99.21 294.68 ... 0.622 0.010 0.012
11 * 10010 215.65 20.32 ... 0.558 0.005 0.009
12 * 10011 96.96 473.71 ... 0.582 0.009 0.011
13 10012 126.02 401.93 ... 1.174 0.010 0.013
14 * 10013 109.47 262.02 ... 0.557 0.010 0.013
15 * 10014 92.94 444.24 ... 0.569 0.008 0.012
16 10015 174.44 469.01 ... 0.554 0.012 0.015
17 * 10016 17.07 427.70 ... 0.549 0.013 0.016
18 10017 232.49 385.61 ... 0.781 0.007 0.011
19 10018 241.99 189.83 ... 0.511 0.024 0.029
20 * 10019 262.88 360.47 ... 0.544 0.004 0.008
21 * 10020 110.98 142.96 ... 0.535 0.011 0.014
这是我运行df.info时得到的信息
INT64索引:20个条目,2到21个
数据列(共10列):
注20非空对象
HHVA 20非空对象
Xpos 20非空对象
Ypos 20非空对象
Vmag 20非空对象
u_Vmag 20非空对象
B-V 20非空对象
u_B-V 20非空对象
e_Vmag 20非空对象
e_B-V 20非空对象
数据类型:对象(10)
内存使用率:1.7+KB
无
u_Vmag和u_B-V列中没有任何测量值
我觉得我只是错过了一些显而易见的东西。有人有什么建议吗?有pandas.read\u csv()
将输入数据转换为输入数据的函数read_csv()
无法检测输入类型,原因是非数字数据和对象的上传
import pandas as pd
import numpy as np
from pandas.compat import StringIO
print(pd.__version__)
data = """
Note|HHVA|Xpos|Ypos|B-V|e_Vmag|e_B-V
1|10001|71.20|68.87|0.731|0.010|0.010
2|10001| |68.87|0.731|0.010|0.010
"""
def myconverter(x):
try:
f = float(x)
except ValueError as ve:
return np.nan
return f
df = pd.read_csv(StringIO(data), converters={'Xpos':myconverter}, sep='|', skiprows=0)
print(df.dtypes)
产生
0.24.2
Note int64
HHVA int64
Xpos float64
Ypos float64
B-V float64
e_Vmag float64
e_B-V float64
让pandas.read_csv()根据输入数据对输入数据进行转换read_csv()
无法检测输入类型,原因是非数字数据和对象的上传
import pandas as pd
import numpy as np
from pandas.compat import StringIO
print(pd.__version__)
data = """
Note|HHVA|Xpos|Ypos|B-V|e_Vmag|e_B-V
1|10001|71.20|68.87|0.731|0.010|0.010
2|10001| |68.87|0.731|0.010|0.010
"""
def myconverter(x):
try:
f = float(x)
except ValueError as ve:
return np.nan
return f
df = pd.read_csv(StringIO(data), converters={'Xpos':myconverter}, sep='|', skiprows=0)
print(df.dtypes)
产生
0.24.2
Note int64
HHVA int64
Xpos float64
Ypos float64
B-V float64
e_Vmag float64
e_B-V float64
首先,你的数据框里有什么?它是一个星团的测光数据集。列应为ID(5位数字)、x位置(像素)、y位置(像素)、V带幅值、B带幅值、颜色(B-V幅值)、V带标准偏差和B-V标准偏差。列应为。。。嗯,是吗?瞧,你确定你的数据框包含你认为它包含的内容吗?如果是这样的话,你有没有试着明确地将它们铸造成漂浮物?
df.info
告诉你什么?比如,帮助我们,帮助你!最好的猜测是这些列中存在某种类型的值,例如熊猫不喜欢转换的“2300”。或者数据集中缺失的值是如何设置的?首先,数据框中有什么?这是一个星团的测光数据集。列应为ID(5位数字)、x位置(像素)、y位置(像素)、V带幅值、B带幅值、颜色(B-V幅值)、V带标准偏差和B-V标准偏差。列应为。。。嗯,是吗?瞧,你确定你的数据框包含你认为它包含的内容吗?如果是这样的话,你有没有试着明确地将它们铸造成漂浮物?df.info
告诉你什么?比如,帮助我们,帮助你!最好的猜测是这些列中存在某种类型的值,例如熊猫不喜欢转换的“2300”。或者,数据集中缺少的值是如何设置的?