如何使用熊猫提取数据矩阵?
Posted
技术标签:
【中文标题】如何使用熊猫提取数据矩阵?【英文标题】:How to extract data matrix using pandas? 【发布时间】:2021-08-30 03:58:49 【问题描述】:我有一个 6901 行 x 42 列的 csv 文件。这个文件的 39 列是一个数据矩阵,我想对其进行一些分析。我不知道如何从 pandas 中提取这些数据作为不需要索引的矩阵并将其视为数值矩阵。
df1=pd.read_csv(fileName, sep='\\t',lineterminator='\\r', engine='python', header='infer')
df1.info()
然后我想把第 4 到 42 列作为一个正常的矩阵进行计算。有人知道怎么做吗?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] >
【问题讨论】:
那么您想知道如何从数据框中提取特定列吗? 【参考方案1】:pandas 为您提供所需的一切。 :) 您不需要将其转换为 numpy 数组。这样你就可以从 pandas DataFrames 中保留一些方便的方法:)
您有一个 .csv 文件,意思是“逗号分隔值” - 有历史原因,但现在这些值由不同的符号分隔,或者用熊猫术语由不同的 分隔符 分隔,短 九月。例如逗号、分号、制表符。
您的数据以分号分隔,因此您应该在 pd.read_csv 命令中使用 sep=';'。
据我了解,您想忽略前 3 列。所以你只需设置 pd.read_csv 变量 usecols (=use columns)
usecols=range(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))
最好的问候
【讨论】:
【参考方案2】:您可以使用将 DataFrame 转换为 numpy ndarray
df1.values
或
df1.to_numpy()
如果您只想提取特定列:
cols = ['A', 'B', 'C']
df1[cols].to_numpy()
【讨论】:
以上是关于如何使用熊猫提取数据矩阵?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用正则表达式从熊猫数据框中的一行中的字符串中提取所有特定值?