如何使用pandas提取数据矩阵?
How to extract data matrix using pandas?
我有一个包含 6901 行 x 42 列的 csv 文件。该文件的 39 列是一个数据矩阵,我想对其进行一些分析。我不知道如何从 pandas 中提取此数据作为不需要索引的矩阵并将其视为数字矩阵。
df1=pd.read_csv(fileName, sep='\t',lineterminator='\r', engine='python', header='infer')
df1.info()
< Protein.IDs 的绑定方法 DataFrame.info ... Ratio.H.L.33
0 A0A024QZP7;P06493;P06493-2;E5RIU6;A0A087WZZ9 ... 47.88100
1 A0A024QZX5;A0A087X1N8;P35237 ... 0.13615
2 A0A024R0T9;K7ER74;P02655;Q6P163;V9GYJ8 ... NaN
3 A0A024R4E5;Q00341;Q00341-2;H0Y394;H7C0A4;C9J5E... ... 5.97650
4 A0A087WZA9;A0A024R4K9;A0A087X266;Q9BXJ8-2;Q9BXJ8 ... NaN
... ... ...
6896 V9GYT7 ... NaN
6897 V9GZ54 ... NaN
6898 X5CMH5;A0A140T9S0;A0A0G2JLV0;A0A087WYD6;E7ENX8... ... NaN
6899 X6RAL5;H7BZW6;U3KPY7 ... NaN
6900 X6RJP6 ... NaN
[6901 rows x 42 columns] >
那我想把第4列到第42列作为一个普通矩阵来计算。有谁知道怎么做吗?
您可以使用
将您的 DataFrame 转换为 numpy ndarray
df1.values
或
df1.to_numpy()
如果您只想提取特定的列:
cols = ['A', 'B', 'C']
df1[cols].to_numpy()
pandas 为您提供所需的一切。 :)
您不需要将其转换为 numpy 数组。这样你就可以保留来自 pandas DataFrames 的一些方便的方法 :)
你有一个 .csv 文件,意思是“逗号分隔值”——这有历史原因,但现在这些值由不同的符号分隔,或者在熊猫术语中由不同的 分隔符 , 简称 sep。例如逗号、分号、制表符。
您的数据显示由分号分隔,因此您应该在 pd.read_csv 命令中使用 sep=';'。
据我了解,您想忽略前 3 列。所以你只需设置 pd.read_csv 变量 usecols (=use columns)
usecols=范围(4,43)
usecols 希望您准确地告诉他您要使用的列。你可以只给他一个从 4 到 43 的范围,或者你可以传递一个列表
a=[4,5,6,7,....,42]
这显然只有在您想要定义特定列时才有用。 python-function range 为你做了这个麻烦的工作。
所以你的命令应该是这样的:
df1=pd.read_csv(fileName, sep=';',lineterminator='\r', engine='python', header='infer',usecols=range(4,43))
此致
我有一个包含 6901 行 x 42 列的 csv 文件。该文件的 39 列是一个数据矩阵,我想对其进行一些分析。我不知道如何从 pandas 中提取此数据作为不需要索引的矩阵并将其视为数字矩阵。
df1=pd.read_csv(fileName, sep='\t',lineterminator='\r', engine='python', header='infer')
df1.info()
< Protein.IDs 的绑定方法 DataFrame.info ... Ratio.H.L.33
0 A0A024QZP7;P06493;P06493-2;E5RIU6;A0A087WZZ9 ... 47.88100
1 A0A024QZX5;A0A087X1N8;P35237 ... 0.13615
2 A0A024R0T9;K7ER74;P02655;Q6P163;V9GYJ8 ... NaN
3 A0A024R4E5;Q00341;Q00341-2;H0Y394;H7C0A4;C9J5E... ... 5.97650
4 A0A087WZA9;A0A024R4K9;A0A087X266;Q9BXJ8-2;Q9BXJ8 ... NaN
... ... ...
6896 V9GYT7 ... NaN
6897 V9GZ54 ... NaN
6898 X5CMH5;A0A140T9S0;A0A0G2JLV0;A0A087WYD6;E7ENX8... ... NaN
6899 X6RAL5;H7BZW6;U3KPY7 ... NaN
6900 X6RJP6 ... NaN
[6901 rows x 42 columns] >
那我想把第4列到第42列作为一个普通矩阵来计算。有谁知道怎么做吗?
您可以使用
将您的 DataFrame 转换为 numpy ndarraydf1.values
或
df1.to_numpy()
如果您只想提取特定的列:
cols = ['A', 'B', 'C']
df1[cols].to_numpy()
pandas 为您提供所需的一切。 :) 您不需要将其转换为 numpy 数组。这样你就可以保留来自 pandas DataFrames 的一些方便的方法 :)
你有一个 .csv 文件,意思是“逗号分隔值”——这有历史原因,但现在这些值由不同的符号分隔,或者在熊猫术语中由不同的 分隔符 , 简称 sep。例如逗号、分号、制表符。
您的数据显示由分号分隔,因此您应该在 pd.read_csv 命令中使用 sep=';'。
据我了解,您想忽略前 3 列。所以你只需设置 pd.read_csv 变量 usecols (=use columns)
usecols=范围(4,43)
usecols 希望您准确地告诉他您要使用的列。你可以只给他一个从 4 到 43 的范围,或者你可以传递一个列表
a=[4,5,6,7,....,42]
这显然只有在您想要定义特定列时才有用。 python-function range 为你做了这个麻烦的工作。
所以你的命令应该是这样的:
df1=pd.read_csv(fileName, sep=';',lineterminator='\r', engine='python', header='infer',usecols=range(4,43))
此致