簡介
np.loadtxt()
用于從文本加載數(shù)據(jù)悦屏。
文本文件中的每一行必須含有相同的數(shù)據(jù)徐伐。
loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)
-
fname
要讀取的文件瓣戚、文件名扫夜、或生成器俘闯。 -
dtype
數(shù)據(jù)類型甸各,默認(rèn)float。 -
comments
注釋芬沉。 -
delimiter
分隔符躺同,默認(rèn)是空格阁猜。 -
skiprows
跳過前幾行讀取,默認(rèn)是0蹋艺,必須是int整型剃袍。 -
usecols
:要讀取哪些列,0是第一列捎谨。例如笛园,usecols = (1,4,5)將提取第2,第5和第6列侍芝。默認(rèn)讀取所有列研铆。 -
unpack
如果為True
,將分列讀取州叠。
問題
今天在ipython中讀取文件時(shí)棵红,
代碼為:
import numpy as np
x = np.loadtxt('C:\Users\sunshine\Desktop\scjym_3yNp3Gj\源數(shù)據(jù)\000001.csv',delimiter= ',',skiprows=(1),usecols= (1,4,6),unpack= False)```
出現(xiàn)下面的錯(cuò)誤:
```SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape```
編碼錯(cuò)誤,經(jīng)搜索問題咧栗,發(fā)現(xiàn)采用如下解決方案:
r'C:\Users\expoperialed\Desktop\Python'
'C:\Users\expoperialed\Desktop\Python'
'C:/Users/expoperialed/Desktop/Python'
看到這里我就明白自己錯(cuò)在哪兒了逆甜。
***書寫字符串有幾個(gè)需要注意的地方***:
####1. 長字符串
非常長的字符串,跨多行時(shí)致板,可以使用***三個(gè)引號***代替普通引號交煞。
即:
print('''This is a very long string.
it will continue.
and it's not over yet.
''hello,world''
still here.'''
可以注意到,使用這種方式時(shí)斟或,***字符串中可以同時(shí)使用單引號和雙引號***
#### 2.原始字符串
即`print(r'c:\nwhere')`
***反斜線有特殊的作用素征,它會(huì)轉(zhuǎn)義***,可以幫助我們在字符串中加入單引號和雙引號等不能直接加入的內(nèi)容萝挤。
***\n御毅,換行符,可以存放于字符串中怜珍。***
以上代碼塊中端蛆,很顯然我們是想要一個(gè)路徑,而如果不使用原始字符串酥泛,我們就會(huì)得到
`c:
where`今豆。
對,為了防止這種情況柔袁,我們還可以使用反斜線進(jìn)行轉(zhuǎn)義呆躲,但是如果這個(gè)路徑很長,就像本文的路徑:
`C:\\\Users\\\sunshine\\\Desktop\\\scjym_3yNp3Gj\\\源數(shù)據(jù)\\\000001.csv`
使用雙斜線瘦馍,就會(huì)很麻煩歼秽。
這時(shí),我們就可以用原始字符串情组。
***原始字符串以r開頭燥筷。***
- 原始字符串結(jié)尾不能是反斜線。
- 如要結(jié)尾用反斜線院崇,`print(r'C:\Programfiles\foo\bar' '\\')`即`C:\Programfiles\foo\bar\ `
在常規(guī)python字符串中肆氓,\U字符組合表示擴(kuò)展的Unicode代碼點(diǎn)轉(zhuǎn)義。
因此這里出現(xiàn)了錯(cuò)誤底瓣。
### python導(dǎo)入csv文件的三種方法
```python
#原始的方式
lines = [line.split(',') for line in open('iris.csv')]
df = [[float(x) for x in line[:4]] for line in lines[1:]]
#使用numpy包
import numpy as np
lines = np.loadtxt('iris.csv',delimiter=',',dtype='str')
df = lines[1:,:4].astype('float')
#使用pandas包
import pandas as pd
df = pd.read_csv('iris.csv')
df=df.ix[:,:4]
這三種方法中最后一種最簡單谢揪,不過花費(fèi)時(shí)間比較長一點(diǎn),第一種最麻煩捐凭,不過用時(shí)最短拨扶。這個(gè)可以通過ipython中的magic函數(shù)%%timeit
來看。