Python-如何更高效地索引和打印

Python-如何更高效地索引和打印,python,pandas,numpy,scikit-learn,Python,Pandas,Numpy,Scikit Learn,我还在学习Python,我有一个关于代码的效率和可读性的快速问题 现在我有这个, import pandas as pd from sklearn.linear_model import Lasso import numpy as np df=pd.read_csv('Data\\cmd.csv') df=df[['A71: ','A120: ',\ 'A70: ','A84: ','A81: ','A89: ',\ 'A101: ','A102: ','A105: ','CR']] X

我还在学习Python,我有一个关于代码的效率和可读性的快速问题

现在我有这个,

import pandas as pd
from sklearn.linear_model import Lasso
import numpy as np

df=pd.read_csv('Data\\cmd.csv')


df=df[['A71: ','A120: ',\
'A70: ','A84: ','A81: ','A89: ',\
'A101: ','A102: ','A105: ','CR']]

X=np.array(df[['A71: ','A120: ',\
'A70: ','A84: ','A81: ','A89: ',\
'A101: ','A102: ','A105: ']])

y=np.array(df[['CR']])

clf=Lasso()
clf.fit(X,y)


print('A71: ', clf.coef_[0])
print('A120: ', clf.coef_[1])    
print('A70: ', clf.coef_[2])
print('A84: ', clf.coef_[3])
print('A81: ', clf.coef_[4])
print('A89: ', clf.coef_[5])
print('A101: ', clf.coef_[6])
print('A102: ', clf.coef_[7])
print('A105: ', clf.coef_[8])

希望你能看到,我想索引我的X特征值和系数,这样我可以参考每个系数是什么,特别是。我觉得他们的方法比我现在的方法更简单。谢谢大家!

我会创建一个列编号列表,即

col_numbers = [71, 120, 70, 84, 81, 89, 101, 102, 105]
然后从中创建一个列表

col_names = ['A{}: '.format(num) for num in col_numbers]
从数据框中获取这些特定列

df = df[col_names]
并使用for循环进行打印

for i in range(len(col_names)):
    print(col_names[i], clf.coef_[i])

我将创建一个列编号列表,即

col_numbers = [71, 120, 70, 84, 81, 89, 101, 102, 105]
然后从中创建一个列表

col_names = ['A{}: '.format(num) for num in col_numbers]
从数据框中获取这些特定列

df = df[col_names]
并使用for循环进行打印

for i in range(len(col_names)):
    print(col_names[i], clf.coef_[i])

根据
数据帧的顺序
,只需一个简单的zip,您就可以非常高效地完成这项工作:

for x in zip(df.columns, clf_coeff):
    print(x[0], x[1])

样本: 输出:

A71:  0
A120:  1
A70:  2
A84:  3
A81:  4
A89:  5
A101:  6
A102:  7
A105:  8

这里的关键是,尽管df.columns比clf_coeff长,但一旦到达较短数组的一端,zip就会停止,这意味着
'CR'
在末尾并不重要

根据
数据帧的顺序
只需一个简单的zip,您就可以非常高效地完成这项工作:

for x in zip(df.columns, clf_coeff):
    print(x[0], x[1])

样本: 输出:

A71:  0
A120:  1
A70:  2
A84:  3
A81:  4
A89:  5
A101:  6
A102:  7
A105:  8

这里的关键是,尽管df.columns比clf_coeff长,但一旦到达较短数组的一端,zip就会停止,这意味着
'CR'
在末尾并不重要

通常人们使用
df.values
来获得
df
的数组版本,而不是
np.array(df)
。我现在主要是在YouTube上引用sentdex,所以我基本上使用了他的想法,因为一些函数对我来说是新的,但我肯定会在一些更个人化的项目上实现这一点,比如这个项目。谢谢通常人们使用
df.values
来获得
df
的数组版本,而不是
np.array(df)
。我现在主要是在YouTube上引用sentdex,所以我基本上使用了他的想法,因为一些函数对我来说是新的,但我肯定会在一些更个人化的项目上实现这一点,比如这个项目。谢谢谢谢你的帮助!我很欣赏这个答案,但是clf.coef_u是sklearn上的内置函数之一,所以我选择了bstrauch24的答案,但是所有这些技巧都非常有助于保持我的学习曲线,所以我肯定会在个人项目上实施你的建议!是的,但它是一个数组,您可以对其进行索引,因此您应该能够应用它?谢谢您的帮助!我很欣赏这个答案,但是clf.coef_u是sklearn上的内置函数之一,所以我选择了bstrauch24的答案,但是所有这些技巧都非常有助于保持我的学习曲线,所以我肯定会在个人项目上实施你的建议!是的,但它是一个数组,您可以对其进行索引,所以您应该能够应用它?