鱼C论坛

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

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

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

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

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

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

使用道具 举报

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

1.读取Excel(需要安装xlrd):
#-*- coding: utf8 -*-
import xlrd
  
fname = "reflect.xls"
bk = xlrd.open_workbook(fname)
shxrange = range(bk.nsheets)
try:
 sh = bk.sheet_by_name("Sheet1")
except:
 print "no sheet in %s named Sheet1" % fname
#获取行数
nrows = sh.nrows
#获取列数
ncols = sh.ncols
print "nrows %d, ncols %d" % (nrows,ncols)
#获取第一行第一列数据 
cell_value = sh.cell_value(1,1)
#print cell_value
  
row_list = []
#获取各行数据
for i in range(1,nrows):
 row_data = sh.row_values(i)
 row_list.append(row_data)
 

2.写入Excel(需安装pyExcelerator)
from pyExcelerator import *
 
w = Workbook()  #创建一个工作簿
ws = w.add_sheet('Hey, Hades')  #创建一个工作表
ws.write(0,0,'bit') #在1行1列写入bit
ws.write(0,1,'huang') #在1行2列写入huang
ws.write(1,0,'xuan') #在2行1列写入xuan
w.save('mini.xls')  #保存
 

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

#-*- coding: utf8 -*-
import xlrd
from pyExcelerator import *
  
w = Workbook() 
ws = w.add_sheet('Sheet1') 
 
fname = "reflect.xls"
bk = xlrd.open_workbook(fname)
shxrange = range(bk.nsheets)
try:
 sh = bk.sheet_by_name("Sheet1")
except:
 print "no sheet in %s named Sheet1" % fname
 
nrows = sh.nrows
ncols = sh.ncols
print "nrows %d, ncols %d" % (nrows,ncols)
  
cell_value = sh.cell_value(1,1)
#print cell_value
  
row_list = []
mydata = []
for i in range(1,nrows):
 row_data = sh.row_values(i)
 pkgdatas = row_data[3].split(',')
 #pkgdatas.split(',')
 #获取每个包的前两个字段
 for pkgdata in pkgdatas:
  pkgdata = '.'.join((pkgdata.split('.'))[:2])
  mydata.append(pkgdata)
 #将列表排序
 mydata = list(set(mydata))
 print mydata
 #将列表转化为字符串
 mydata = ','.join(mydata)
 #写入数据到每行的第一列
 ws.write(i,0,mydata)
 mydata = []
 row_list.append(row_data[3])
#print row_list
 
w.save('mini.xls')


4.现在我需要根据Excel文件中满足特定要求的apk的md5值来从服务器获取相应的apk样本,就需要这样做: 
#-*-coding:utf8-*-
import xlrd
import os
import shutil
  
fname = "./excelname.xls"
bk = xlrd.open_workbook(fname)
shxrange = range(bk.nsheets)
try:
 #打开Sheet1工作表
 sh = bk.sheet_by_name("Sheet1")
except:
 print "no sheet in %s named Sheet1" % fname
#获取行数
nrows = sh.nrows
#获取列数
ncols = sh.ncols
#print "nrows %d, ncols %d" % (nrows,ncols)
#获取第一行第一列数据
cell_value = sh.cell_value(1,1)
#print cell_value
  
row_list = []
#range(起始行,结束行)
for i in range(1,nrows):
 row_data = sh.row_values(i)
 if row_data[6] == "HXB":
  filename = row_data[3]+".apk"
  #print "%s %s %s" %(i,row_data[3],filename)
  filepath = r"./1/"+filename
  print "%s %s %s" %(i,row_data[3],filepath)
  if os.path.exists(filepath):
   shutil.copy(filepath, r"./myapk/")
 

补充一个使用xlwt3进行Excel文件的写操作。
import xlwt3
 
if __name__ == '__main__':
     
    datas = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h']]#二维数组
    file_path = 'D:\\test.xlsx'
     
    wb = xlwt3.Workbook()
    sheet = wb.add_sheet('test')#sheet的名称为test
     
    #单元格的格式
    style = 'pattern: pattern solid, fore_colour yellow; '#背景颜色为黄色
    style += 'font: bold on; '#粗体字
    style += 'align: horz centre, vert center; '#居中
    header_style = xlwt3.easyxf(style)
     
    row_count = len(datas)
    col_count = len(datas[0])
    for row in range(0, row_count): 
        col_count = len(datas[row]) 
        for col in range(0, col_count):
            if row == 0:#设置表头单元格的格式
                sheet.write(row, col, datas[row][col], header_style)
            else:
                sheet.write(row, col, datas[row][col])
    wb.save(file_path)
 


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

好了,python操作Excel就这么!些了,简单吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

稍微排版下啊- -我看着都晕
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢前辈提醒哈
祝早生贵子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

比如當前的CSV文件名叫day_date.csv,我要讀取該文件的第一行内容並使其打印在屏幕上:
import csv 
filename = 'day_date.csv'
with open(filename) as fn:
      need = csv.reader(fn)
      final = next(need)
      print(final)

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

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

不知這麽說你能否理解,一起加油,我們相互交流,共勉。
想知道小甲鱼最近在做啥?请访问 -> 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'
这是啥意思啊  按照你的写的 大神别嫌弃 求指导
想知道小甲鱼最近在做啥?请访问 -> 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文件也應該放在這個文件夾下,因此代碼是:
filename = 'day_date.csv'

或者,你可以在把這個CSV文件的完整地址複製一下,例如該CSV文件放在D盤file文件夾中,那該文件地址就是D:\file\day_date.csv,代碼應該是:
filename = 'D:\\file\\day_date.csv'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-4 20:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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