鱼C论坛

 找回密码
 立即注册
查看: 2636|回复: 6

新手小白 关于python数据读取的问题

[复制链接]
发表于 2017-4-13 15:30:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小白一个 现要向python中导入数据 进行数据分析
现在该怎么做   数据有 txt 和 csv的 我该如何操作
需要下载其他东西吗 代码该怎么写  越细越好 感激不敬
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-4-13 16:58:41 | 显示全部楼层
本帖最后由 新手·ing 于 2017-4-13 17:05 编辑

1.读取Excel(需要安装xlrd):

  1. #-*- coding: utf8 -*-
  2. import xlrd
  3.   
  4. fname = "reflect.xls"
  5. bk = xlrd.open_workbook(fname)
  6. shxrange = range(bk.nsheets)
  7. try:
  8. sh = bk.sheet_by_name("Sheet1")
  9. except:
  10. print "no sheet in %s named Sheet1" % fname
  11. #获取行数
  12. nrows = sh.nrows
  13. #获取列数
  14. ncols = sh.ncols
  15. print "nrows %d, ncols %d" % (nrows,ncols)
  16. #获取第一行第一列数据
  17. cell_value = sh.cell_value(1,1)
  18. #print cell_value
  19.   
  20. row_list = []
  21. #获取各行数据
  22. for i in range(1,nrows):
  23. row_data = sh.row_values(i)
  24. row_list.append(row_data)
复制代码


2.写入Excel(需安装pyExcelerator)

  1. from pyExcelerator import *

  2. w = Workbook()  #创建一个工作簿
  3. ws = w.add_sheet('Hey, Hades')  #创建一个工作表
  4. ws.write(0,0,'bit') #在1行1列写入bit
  5. ws.write(0,1,'huang') #在1行2列写入huang
  6. ws.write(1,0,'xuan') #在2行1列写入xuan
  7. w.save('mini.xls')  #保存
复制代码


3.再举个自己写的读写Excel的例子
读取reflect.xls中的某些信息进行处理后写入mini.xls文件中。 


  1. #-*- coding: utf8 -*-
  2. import xlrd
  3. from pyExcelerator import *
  4.   
  5. w = Workbook()
  6. ws = w.add_sheet('Sheet1')

  7. fname = "reflect.xls"
  8. bk = xlrd.open_workbook(fname)
  9. shxrange = range(bk.nsheets)
  10. try:
  11. sh = bk.sheet_by_name("Sheet1")
  12. except:
  13. print "no sheet in %s named Sheet1" % fname

  14. nrows = sh.nrows
  15. ncols = sh.ncols
  16. print "nrows %d, ncols %d" % (nrows,ncols)
  17.   
  18. cell_value = sh.cell_value(1,1)
  19. #print cell_value
  20.   
  21. row_list = []
  22. mydata = []
  23. for i in range(1,nrows):
  24. row_data = sh.row_values(i)
  25. pkgdatas = row_data[3].split(',')
  26. #pkgdatas.split(',')
  27. #获取每个包的前两个字段
  28. for pkgdata in pkgdatas:
  29.   pkgdata = '.'.join((pkgdata.split('.'))[:2])
  30.   mydata.append(pkgdata)
  31. #将列表排序
  32. mydata = list(set(mydata))
  33. print mydata
  34. #将列表转化为字符串
  35. mydata = ','.join(mydata)
  36. #写入数据到每行的第一列
  37. ws.write(i,0,mydata)
  38. mydata = []
  39. row_list.append(row_data[3])
  40. #print row_list

  41. w.save('mini.xls')
复制代码



4.现在我需要根据Excel文件中满足特定要求的apk的md5值来从服务器获取相应的apk样本,就需要这样做: 

  1. #-*-coding:utf8-*-
  2. import xlrd
  3. import os
  4. import shutil
  5.   
  6. fname = "./excelname.xls"
  7. bk = xlrd.open_workbook(fname)
  8. shxrange = range(bk.nsheets)
  9. try:
  10. #打开Sheet1工作表
  11. sh = bk.sheet_by_name("Sheet1")
  12. except:
  13. print "no sheet in %s named Sheet1" % fname
  14. #获取行数
  15. nrows = sh.nrows
  16. #获取列数
  17. ncols = sh.ncols
  18. #print "nrows %d, ncols %d" % (nrows,ncols)
  19. #获取第一行第一列数据
  20. cell_value = sh.cell_value(1,1)
  21. #print cell_value
  22.   
  23. row_list = []
  24. #range(起始行,结束行)
  25. for i in range(1,nrows):
  26. row_data = sh.row_values(i)
  27. if row_data[6] == "HXB":
  28.   filename = row_data[3]+".apk"
  29.   #print "%s %s %s" %(i,row_data[3],filename)
  30.   filepath = r"./1/"+filename
  31.   print "%s %s %s" %(i,row_data[3],filepath)
  32.   if os.path.exists(filepath):
  33.    shutil.copy(filepath, r"./myapk/")
复制代码


补充一个使用xlwt3进行Excel文件的写操作。

  1. import xlwt3

  2. if __name__ == '__main__':
  3.      
  4.     datas = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h']]#二维数组
  5.     file_path = 'D:\\test.xlsx'
  6.      
  7.     wb = xlwt3.Workbook()
  8.     sheet = wb.add_sheet('test')#sheet的名称为test
  9.      
  10.     #单元格的格式
  11.     style = 'pattern: pattern solid, fore_colour yellow; '#背景颜色为黄色
  12.     style += 'font: bold on; '#粗体字
  13.     style += 'align: horz centre, vert center; '#居中
  14.     header_style = xlwt3.easyxf(style)
  15.      
  16.     row_count = len(datas)
  17.     col_count = len(datas[0])
  18.     for row in range(0, row_count):
  19.         col_count = len(datas[row])
  20.         for col in range(0, col_count):
  21.             if row == 0:#设置表头单元格的格式
  22.                 sheet.write(row, col, datas[row][col], header_style)
  23.             else:
  24.                 sheet.write(row, col, datas[row][col])
  25.     wb.save(file_path)
复制代码



注:以上代码在Python 3.x版本测试通过。

好了,python操作Excel就这么!些了,简单吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-13 17:03:15 | 显示全部楼层
新手·ing 发表于 2017-4-13 16:58
1.读取Excel(需要安装xlrd):

稍微排版下啊- -我看着都晕
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-13 17:05:29 | 显示全部楼层
lumber2388779 发表于 2017-4-13 17:03
稍微排版下啊- -我看着都晕

谢谢前辈提醒哈
祝早生贵子
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-13 20:43:42 | 显示全部楼层
本帖最后由 文质彬彬胡汉三 于 2017-4-13 20:48 编辑

朋友你好!你需要分析的是TXT和CSV文件,都是是比較常見的格式存儲。關於文件讀取你可以看一下小甲魚老師視頻教學第七章,就對TXT格式的文件處理有一定理解。
我也正在學習數據分析處理這一塊,關於CSV文件的話,我給你寫個例子你看一下是否能夠明白。
不過具體代碼需要根據你的CSV文件内容和你需要的數據來寫,我用我的一個CSV文件來舉例。

比如當前的CSV文件名叫day_date.csv,我要讀取該文件的第一行内容並使其打印在屏幕上:

  1. import csv
  2. filename = 'day_date.csv'
  3. with open(filename) as fn:
  4.       need = csv.reader(fn)
  5.       final = next(need)
  6.       print(final)
复制代码


上面的代碼,首先在python導入模塊csv,然後將要打開的文件名稱存儲在變量filename中,然後用csv模塊的reader()方法創建閱讀器,之後使用函數next()將閱讀器對象傳遞給final,也就是得到文件的第一行,這樣就可以使python在屏幕打印出csv文件中的第一行數據.
next()函數的調用就是得到文件的每一行,調用一次,創建的閱讀器裏面就多一行的數據。
屏幕打印的結果是以列表形勢表現的。

代碼中的csv模塊是python自帶的,直接在代碼開頭使用import導入就可以。

不知這麽說你能否理解,一起加油,我們相互交流,共勉。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-13 21:06:30 | 显示全部楼层
文质彬彬胡汉三 发表于 2017-4-13 20:43
朋友你好!你需要分析的是TXT和CSV文件,都是是比較常見的格式存儲。關於文件讀取你可以看一下小甲魚老師視 ...

Traceback (most recent call last):
  File "F:\python 练习\读取cvs文件.py", line 4, in <module>
    with open(filename) as fn:
IOError: [Errno 2] No such file or directory: 'London Accidents with GEO info.csv'
这是啥意思啊  按照你的写的 大神别嫌弃 求指导
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-13 22:08:52 | 显示全部楼层
没有土豆的洋芋 发表于 2017-4-13 21:06
Traceback (most recent call last):
  File "F:\python 练习\读取cvs文件.py", line 4, in
    with  ...


朋友你好,我不是大神啦,也是和你一樣的新手。
這個錯誤是因為python沒有發現這個文件。
例如,你的代碼放在D盤python文件夾中,那麽你需要分析的這個csv文件也應該放在這個文件夾下,因此代碼是:
  1. filename = 'day_date.csv'
复制代码


或者,你可以在把這個CSV文件的完整地址複製一下,例如該CSV文件放在D盤file文件夾中,那該文件地址就是D:\file\day_date.csv,代碼應該是:
  1. filename = 'D:\\file\\day_date.csv'
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-10 02:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表