如何優雅地將dat, txt 或者excel 文件導入python?
實驗人員,在實驗中會得到一系列數據,類似於一個excel 文件很多列那種。需要以其中若干列作為坐標畫圖,請教如何優雅地將數據導入python, 方便下一步自由定義各列坐標畫圖?
最後,最好答案包含一段實現代碼。-------------------------------------------------------------看了答案,所以解釋一下。最近在家休假,所以谷歌什麼的搜索網站都不方便,做了一回伸手黨。。。
aaa.csv
-------------
&>&>&> import pandas as pd
&>&>&> data = pd.read_csv("aaa.csv")
&>&>&> data #查看錶格
x y z
0 1 2 Y
1 2 4 Y
2 3 8 Y
3 4 16 N
4 5 32 N
&>&>&> data.columns #查看錶格有哪些列,可以看到有x, y, z列
Index([u"x", u"y", u"z"], dtype="object")
&>&>&> data["x"] #查看x列
0 1
1 2
2 3
3 4
4 5
Name: x, dtype: int64
&>&>&> data["y"] #查看y列
0 2
1 4
2 8
3 16
4 32
Name: y, dtype: int64
&>&>&> data["z"] #查看z列
0 Y
1 Y
2 Y
3 N
4 N
Name: z, dtype: object
&>&>&> import matplotlib.pyplot as plt
&>&>&> plt.bar(data["x"], data["y"]) #畫柱狀圖
&
&>&>&> plt.title("example") #設置標題
&>&>&> plt.xlabel("x") #橫坐標加說明文字"x"
&
&>&>&> plt.ylabel("y") #縱坐標加說明文字"y"
&
&>&>&> plt.show() #顯示圖形
另存為成csv文件,然後直接用split函數進行分割獲取數據。
http://pandas.pydata.org/pandas-docs/stable/api.html#input-output
sys.stdin 可以按行讀取,然後自己寫列表推導式
為什麼一定要用python呢,你用excel寫一條公式,類似於:=array("filter"=&>"A")然後按住右下角的十字架,一直往下拖,一堆數組就出來了,然後用php寫進去就好了
#-*- coding: utf-8 -*-
#encoding=utf-8
import MySQLdb
import xlrd
#打開excel
data = xlrd.open_workbook("testpython.xls")
#根據名字拿到excel的某個表
table = data.sheet_by_name("Sheet1")
#行數
nrows = table.nrows
for rownum in range(1,nrows):
row = table.row_values(rownum)
print len(row)
# 打開資料庫連接
db = MySQLdb.connect("localhost","root","","pythonmysql" )
#鏈接資源
cursor = db.cursor()
# SQL 插入語句
sql = "insert into pyuser (username,password, email, qq) values("%s", "%s","%s","%s")" %
(row[0],row[1],row[2],row[3])
print sql
try:
# 執行sql語句
cursor.execute(sql)
# 提交到資料庫執行
db.commit()
except:
db.rollback()
# 關閉資料庫連接
db.close()
python操作Excel讀寫--使用xlrd
xlwt/xlrdmatplotlib嗯這種東西谷歌一下不就有了么
Learn how to use Numpy
2015-07-28
http://book.douban.com/subject/10760444/ 一書中兩章:Data Loading, Storage, and File FormatsPlotting and Visualization其中 data loading 部分提到了 pandas 這個包。它能夠從 csv、xls 等等格式中載入數據。如果經常做數據分析的話,不妨看一下這本書。還有這一本:
Python科學計算 (豆瓣)如果感覺 pandas 有點殺雞用牛刀了,就可以嘗試一些專門解析 xls 文件的庫,比如:
http://www.python-excel.org/2015-11-18T14:59+08:00
Kenneth Reitz 大神的 tablib: kennethreitz/tablib · GitHub--前幾天剛看到的用Numpy的方法
假設想從txt/csv文檔讀取兩列數據:
import numpy as np
col1, col2 = np.loadtxt("文件路徑", skiprows=(讀取時需要跳過的行數), usecols=(1,2), unpack=True)
就好了
Python 將txt文件中的實驗數據導入數組
參考資料:Scipy官方文檔
1. 數據來源:D盤data.txt文件,如下圖所示:
0 1270.451
1 1270.371688
2 1270.133771
3 1269.737313
4 1269.182419
5 1268.469236
6 1267.677477
……
……
2. Python代碼
import numpy as np
file_name=r"D:data.txt"
# 將兩列數據分別導入x,y數組
x,y=np.loadtxt(filename,unpack="true")
# 如果沒有numpy庫,需要先再安裝numpy庫
3.作圖
運用matplotlib作圖
import pylab as plt
plt.plot(x,y)
plt.show()
for lines in file_test.readlines():
strdata = ",".join(lines.split(" "))
file_test2.write(strdata)
針對 .dat 文件,可以通過 split來分割,從而實現讀取。
或者直接把.dat 文件直接轉換成 .txt 格式,再用numpy進行讀寫。
關於python和excel,不推薦用xlrd和xlwt以及這兩個的開發者推薦的pyopenxl
python操作excel不要用xlrd或者xlwt或者openpyxl,這些都有很大的缺陷,xlrd只能讀但是不能與xlwt結合使用,openpyxl的文件保存了竟然不能夠修改了,xlwt和openpyxl竟然都不能讀已有的文件,是我太笨還是我沒找到wxrd和xlwt結合的方式呢。
可以考慮xlwings,如果你打算把圖畫在excel裡面,同時你也可以利用xlwings在jupyter notebook來操作xls。在數據量不大的情況下xlwings可以實現python和excel的良好實施交互,xlwings的目的主要代替excel的vba來對excel進行擴展。
其實pandas和numpy也非常好的選擇,我用過pandas,效果出奇的好。樓上有人說殺雞用牛刀,但是pandas效率、API的易用程度其實要好於xlrd的,各種行列數據操作,xlrd還是有點原始了。
所以綜上你可以在jupyter notebook下用pandas處理excel數據,然後利用matplotlib繪圖。或者在ipython命令行下。
def load_large_dta(fname):
import sys
reader = pd.read_stata(fname, iterator=True)
df = pd.DataFrame()
try:
chunk = reader.get_chunk(100*1000)
while len(chunk) &> 0:
df = df.append(chunk, ignore_index=True)
chunk = reader.get_chunk(100*1000)
print ".",
sys.stdout.flush()
except (StopIteration, KeyboardInterrupt):
pass
print "
loaded {} rows".format(len(df))
return df
相類似的讀取csv, json 有 pd.read_csv()pd.read_json()
求解答,這個為什麼不顯示東西,是空的,是我路徑寫錯了嗎?還是其他問題?
pandas你值得擁有!無論是從csv,還是資料庫,都沒有問題,處理起來也方便。
xlrt吧,我記的是先xlrd.open _workbook()
z再.sheet _name()[索引] ncol=.ncols
list=.col_values().是sheet_namePS手機打字好燥numpy.genfromtxt
不會優雅的,只會胡來,比如split,正則啥的
推薦閱讀:
※如何用 Python 科學計算中的矩陣替代循環?
※在使用pip list時出現DEPRECATION是怎麼回事?怎麼解決?
TAG:Python | Python庫 | Python入門 | Python使用技巧 | Python標準庫 |