如何使用Scikit-learn Pandas读取.txt文件

时间:2017-04-26 19:19:30

标签: python pandas scikit-learn

import pandas
from pandas.tools.plotting import scatter_matrix
import matplotlib.pyplot as plt
from sklearn import model_selection
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC

# Load dataset
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/yeast/yeast.data"
names = ['Sequence Name','mcg', 'gvh', 'alm', 'mit', 'erl','pox','vac','nuc']
dataset = pandas.read_csv(url, names=names)

# shape
print(dataset.shape)

# head
print(dataset.head(20))

# descriptions
print(dataset.describe())
# class distribution
print(dataset.groupby('').size())
# box and whisker plots
dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)
plt.show()
# histograms
dataset.hist()
plt.show()
# scatter plot matrix
scatter_matrix(dataset)
plt.show()

这就是错误:

                                       Sequence Name  mcg  gvh  alm  mit  \
0   ADT1_YEAST  0.58  0.61  0.47  0.13  0.50  0.00...  NaN  NaN  NaN  NaN   
1   ADT2_YEAST  0.43  0.67  0.48  0.27  0.50  0.00...  NaN  NaN  NaN  NaN   
2   ADT3_YEAST  0.64  0.62  0.49  0.15  0.50  0.00...  NaN  NaN  NaN  NaN   
3   AAR2_YEAST  0.58  0.44  0.57  0.13  0.50  0.00...  NaN  NaN  NaN  NaN   
4   AATM_YEAST  0.42  0.44  0.48  0.54  0.50  0.00...  NaN  NaN  NaN  NaN   
5   AATC_YEAST  0.51  0.40  0.56  0.17  0.50  0.50...  NaN  NaN  NaN  NaN   
6   ABC1_YEAST  0.50  0.54  0.48  0.65  0.50  0.00...  NaN  NaN  NaN  NaN   
7   BAF1_YEAST  0.48  0.45  0.59  0.20  0.50  0.00...  NaN  NaN  NaN  NaN   
8   ABF2_YEAST  0.55  0.50  0.66  0.36  0.50  0.00...  NaN  NaN  NaN  NaN   
9   ABP1_YEAST  0.40  0.39  0.60  0.15  0.50  0.00...  NaN  NaN  NaN  NaN   
10  ACE1_YEAST  0.43  0.39  0.54  0.21  0.50  0.00...  NaN  NaN  NaN  NaN   
11  ACE2_YEAST  0.42  0.37  0.59  0.20  0.50  0.00...  NaN  NaN  NaN  NaN   
12  ACH1_YEAST  0.40  0.42  0.57  0.35  0.50  0.00...  NaN  NaN  NaN  NaN   
13  ACON_YEAST  0.60  0.40  0.52  0.46  0.50  0.00...  NaN  NaN  NaN  NaN   
14  ACR1_YEAST  0.66  0.55  0.45  0.19  0.50  0.00...  NaN  NaN  NaN  NaN   
15  ACT_YEAST   0.46  0.44  0.52  0.11  0.50  0.00...  NaN  NaN  NaN  NaN   
16  ACT2_YEAST  0.47  0.39  0.50  0.11  0.50  0.00...  NaN  NaN  NaN  NaN   
17  ACT3_YEAST  0.58  0.47  0.54  0.11  0.50  0.00...  NaN  NaN  NaN  NaN   
18  ACT5_YEAST  0.50  0.34  0.55  0.21  0.50  0.00...  NaN  NaN  NaN  NaN   
19  ADA2_YEAST  0.61  0.60  0.55  0.21  0.50  0.00...  NaN  NaN  NaN  NaN   

    erl  pox  vac  nuc  
0   NaN  NaN  NaN  NaN  
1   NaN  NaN  NaN  NaN  
2   NaN  NaN  NaN  NaN  
3   NaN  NaN  NaN  NaN  
4   NaN  NaN  NaN  NaN  
5   NaN  NaN  NaN  NaN  
6   NaN  NaN  NaN  NaN  
7   NaN  NaN  NaN  NaN  
8   NaN  NaN  NaN  NaN  
9   NaN  NaN  NaN  NaN  
10  NaN  NaN  NaN  NaN  
11  NaN  NaN  NaN  NaN  
12  NaN  NaN  NaN  NaN  
13  NaN  NaN  NaN  NaN  
14  NaN  NaN  NaN  NaN  
15  NaN  NaN  NaN  NaN  
16  NaN  NaN  NaN  NaN  
17  NaN  NaN  NaN  NaN  
18  NaN  NaN  NaN  NaN  
19  NaN  NaN  NaN  NaN  
       mcg  gvh  alm  mit  erl  pox  vac  nuc
count  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
mean   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
std    NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
min    NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
25%    NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
50%    NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
75%    NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
max    NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
Traceback (most recent call last):

  File "<ipython-input-28-633123d66170>", line 35, in <module>
    print(dataset.groupby('').size())

问题是Yeast.data不是逗号分隔。现在我有一个逗号分隔的训练数据,但不是.csv格式,而是纯文本文档,我不能用Excel打开它。我怎么样用熊猫读它?

1 个答案:

答案 0 :(得分:0)

分隔符/分隔符参数的默认值为pd.read_csv中的,,因此您必须明确设置它:

In [6]: dataset = pd.read_csv(url, names=names, delim_whitespace=True)

In [7]: dataset
Out[7]:
            Sequence Name   mcg   gvh   alm  mit  erl   pox   vac  nuc
ADT1_YEAST           0.58  0.61  0.47  0.13  0.5  0.0  0.48  0.22  MIT
ADT2_YEAST           0.43  0.67  0.48  0.27  0.5  0.0  0.53  0.22  MIT
ADT3_YEAST           0.64  0.62  0.49  0.15  0.5  0.0  0.53  0.22  MIT
AAR2_YEAST           0.58  0.44  0.57  0.13  0.5  0.0  0.54  0.22  NUC
AATM_YEAST           0.42  0.44  0.48  0.54  0.5  0.0  0.48  0.22  MIT
AATC_YEAST           0.51  0.40  0.56  0.17  0.5  0.5  0.49  0.22  CYT
ABC1_YEAST           0.50  0.54  0.48  0.65  0.5  0.0  0.53  0.22  MIT
BAF1_YEAST           0.48  0.45  0.59  0.20  0.5  0.0  0.58  0.34  NUC
ABF2_YEAST           0.55  0.50  0.66  0.36  0.5  0.0  0.49  0.22  MIT
ABP1_YEAST           0.40  0.39  0.60  0.15  0.5  0.0  0.58  0.30  CYT
...                   ...   ...   ...   ...  ...  ...   ...   ...  ...
YP52_YEAST           0.48  0.61  0.57  0.17  0.5  0.0  0.45  0.22  CYT
YP53_YEAST           0.71  0.50  0.50  0.18  0.5  0.0  0.46  0.22  CYT
YPT7_YEAST           0.61  0.48  0.54  0.25  0.5  0.0  0.50  0.22  CYT
R29A_YEAST           0.38  0.32  0.64  0.41  0.5  0.0  0.44  0.11  CYT
R29B_YEAST           0.38  0.40  0.66  0.35  0.5  0.0  0.43  0.11  CYT
YUR1_YEAST           0.81  0.62  0.43  0.17  0.5  0.0  0.53  0.22  ME2
ZIP1_YEAST           0.47  0.43  0.61  0.40  0.5  0.0  0.48  0.47  NUC
ZNRP_YEAST           0.67  0.57  0.36  0.19  0.5  0.0  0.56  0.22  ME2
ZUO1_YEAST           0.43  0.40  0.60  0.16  0.5  0.0  0.53  0.39  NUC
G6PD_YEAST           0.65  0.54  0.54  0.13  0.5  0.0  0.53  0.22  CYT

[1484 rows x 9 columns]

或者您可以使用pd.read_fwf()方法:

In [8]: dataset = pd.read_fwf(url, names=names)

In [9]: dataset
Out[9]:
            Sequence Name   mcg   gvh   alm  mit  erl   pox   vac  nuc
ADT1_YEAST           0.58  0.61  0.47  0.13  0.5  0.0  0.48  0.22  MIT
ADT2_YEAST           0.43  0.67  0.48  0.27  0.5  0.0  0.53  0.22  MIT
ADT3_YEAST           0.64  0.62  0.49  0.15  0.5  0.0  0.53  0.22  MIT
AAR2_YEAST           0.58  0.44  0.57  0.13  0.5  0.0  0.54  0.22  NUC
AATM_YEAST           0.42  0.44  0.48  0.54  0.5  0.0  0.48  0.22  MIT
AATC_YEAST           0.51  0.40  0.56  0.17  0.5  0.5  0.49  0.22  CYT
ABC1_YEAST           0.50  0.54  0.48  0.65  0.5  0.0  0.53  0.22  MIT
BAF1_YEAST           0.48  0.45  0.59  0.20  0.5  0.0  0.58  0.34  NUC
ABF2_YEAST           0.55  0.50  0.66  0.36  0.5  0.0  0.49  0.22  MIT
ABP1_YEAST           0.40  0.39  0.60  0.15  0.5  0.0  0.58  0.30  CYT
...                   ...   ...   ...   ...  ...  ...   ...   ...  ...
YP52_YEAST           0.48  0.61  0.57  0.17  0.5  0.0  0.45  0.22  CYT
YP53_YEAST           0.71  0.50  0.50  0.18  0.5  0.0  0.46  0.22  CYT
YPT7_YEAST           0.61  0.48  0.54  0.25  0.5  0.0  0.50  0.22  CYT
R29A_YEAST           0.38  0.32  0.64  0.41  0.5  0.0  0.44  0.11  CYT
R29B_YEAST           0.38  0.40  0.66  0.35  0.5  0.0  0.43  0.11  CYT
YUR1_YEAST           0.81  0.62  0.43  0.17  0.5  0.0  0.53  0.22  ME2
ZIP1_YEAST           0.47  0.43  0.61  0.40  0.5  0.0  0.48  0.47  NUC
ZNRP_YEAST           0.67  0.57  0.36  0.19  0.5  0.0  0.56  0.22  ME2
ZUO1_YEAST           0.43  0.40  0.60  0.16  0.5  0.0  0.53  0.39  NUC
G6PD_YEAST           0.65  0.54  0.54  0.13  0.5  0.0  0.53  0.22  CYT

[1484 rows x 9 columns]