(1)主程序main.py与模块程序mod1.py在同一目录下。
无极ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
--src
|--mod1.py
|--main.py
直接在main.py中导入模块mod1.py,即 import mod1 或 from mod1 import *
(2)主程序main.py所在目录是模块程序mod.py所在目录的父目录。
--src
|--mod1.py
|--main.py
---mod2
|--mod2.py
先需要在mod2文件夹中建立空文件__init__.py
然后在main.py中导入模块mod2.py,即 import mod2.mod2 或 from mod2.mod2 import *
(3)主程序main.py导入上层目录中的模块或其他目录(平级)下的模块。
--src
|--mod1.py
---mod2
|--mod2.py
---sub
|--main.py
先需要在mod2文件夹中建立空文件__init__.py,而src文件夹下不需要建立
然后进入主程序main.py所在的路径,执行python main.py
在main.py中导入模块mod2.py,即 import mod2.mod2 或 from mod2.mod2 import *
执行前在main.py中加入:
import sys
sys.path.append("..")
import mod1
import mod2.mod2
你说的是使用python读取dat,txt类型文件或excel文件吧,这里我不清楚dat类型文件是什么类型的文件,数据格式是怎样的,所以主要讲一下如何简单快捷的读取txt文件指定的列数据和excel文件指定的列数据,主要用到numpy,pandas这两个包,这两个主要做科学计算和数据处理,python处理实验数据,经常要用到这两个包,至于dat类型的文件,我提供一种可能的思路,实验环境win7+python3.6+pycharm,主要步骤如下:
1.读取txt文件指定列。这里主要用到numpy这个包,以及其包含的loadtxt函数,读取的前提是txt文件不是完全的杂乱无章,没有一点格式、结构可循,如果真的是这样,建议手动调整一下格式,使其尽量保持一定的格式结果,然后再读取,不然的话,会出现错误,我这里新建了一个txt文件,样本内容如下,每行的数据以3个空格为间隔,一般情况下,实验所产生的txt数据都是有一定结构的:
对应读取的代码如下,这里以读取1,3列数据为例,很简单:
程序运行结果如下,已经成功打印出1,3列数据:
2.读取excel文件指定的列。这里主要用到pandas这个包,以及其包含的read_excel函数,因为excel数据本来就是有一定格式的,所以读起来就简单了许多,这里我新建了一个excel文件,样本数据如下:
对应读取的代码如下,这里以读取1,3列数据为例,很简单:
程序运行结果如下,已经成功打印出1,3列数据:
3.至于dat文件的话,这里提供一种可能思路,如果dat文件可以直接用记事打开的话,并且数据可以正常显示,没有乱码的情况下,有一定的格式可循,可以将其看作一个普通文件,使用python的open函数进行读取,将读取的数据存储在一个list列表中,或者使用特定软件将其转换成txt或excel文件后,再进行读取。如果是特殊类型的文件,这个就不好说了,这里就要自己想办法了。
至于后面如何进行可视化绘图,我就不多说了,像matplotlib等数据可视化包都可以。至此,就完成了这3中类型文件的读取,总的来说,实现起来不难,都有现成的包可直接利用,方便了许多,当然你也可以用其他包或者自己来实现,这个就因人而异了,只要能正常的读取实验数据就行,网上也有这方面的资料,你可以参考一下,希望以上分享的内容能对你有所帮助吧。
Excel是一个二进制文件,它保存有关工作簿中所有工作表的信息
CSV代表Comma Separated Values 。这是一个纯文本格式,用逗号分隔一系列值
Excel不仅可以存储数据,还可以对数据进行操作
CSV文件只是一个文本文件,它存储数据,但不包含格式,公式,宏等。它也被称为平面文件
Excel是一个电子表格,将文件保存为自己的专有格式,即xls或xlsx
CSV是将表格信息保存为扩展名为.csv的分隔文本文件的格式
保存在excel中的文件不能被文本编辑器打开或编辑
CSV文件可以通过文本编辑器(如记事本)打开或编辑
excel中会有若干个表单,每个表单都会这些属性:
行数(nrows) 列数(ncols) 名称(name) 索引(number)
import xlrd //执行操作前需要导入xlrd库
#读取文件
excel = xlrd.open_workexcel("文件地址") //这里表格名称为excel,文件的地址可以从文件的属性中看到
#读取表格表单数量
sheet_num= excel.nsheets // sheet_num为变量,其值为表格表单数量
#读取表格表单名称
sheet_name = excel.sheet_names() // sheet_name为变量,其值为表格表单名称
#如果想要看到上述两个变量,可以使用print()函数将它们打印出来
#想要读取某个表单的数据,首先获取表单 excel.sheet_by_index(0)
//表单索引从0开始,获取第一个表单对象 excel.sheet_by_name('xxx')
// 获取名为”xxx”的表单对象 excel.sheets()
// 获取所有的表单对象 获取单元格的内容:使用cell_value 方法 这里有两个参数:行号和列号,用来读取指定的单元格内容。
第一行的内容是:sheet.row_values(rowx=0)
第一列的内容是:sheet.col_values(colx=0)
CSV是英文Comma Separate Values(逗号分隔值)的缩写,文档的内容是由 “,” 分隔的一列列的数据构成的。在python数据处理中也经常用到。
import csv //执行操作前需要导入csv库
#csv读取
遍历其中数据 csv_file = csv.reader(open(‘文件地址’,’r’)) for x in csv_file print(x)
在进行数据处理时,如果数据简单,数量不多,excel是大家的首选。但是当数据众多,类型复杂,需要灵活地显示切片、进行索引、以及排序时,python会更加方便。借助python中的numpy和pandas库,它能快速完成各种任务,包括数据的创建、检查、清洗、预处理、提取、筛选、汇总、统计等。接下来几篇文章,将以excel为参照,介绍python中数据的处理。
提到pandas,那就不得不提两类重要的数据结构,Series和DataFrame,这两类数据结构都是建立在numpy的数组array基础上。与array相比,Series是一个一维的数据集,但是每个数据元素都带有一个索引,有点类似于字典。而DataFrame在数组的基础上,增加了行索引和列索引,类似于Series的字典,或者说是一个列表集。
所以在数据处理前,要安装好numpy , pandas。接下来就看看如何完成一套完整的数据操作。
创建数据表的方法分两种,分别是从外部导入数据,以及直接写入数据。
在python中,也可外部导入xlsx格式文件,使用read_excel()函数:
import pandas as pd
from pandas import DataFrame,Series
data=DataFrame(pd.read_excel('c:/python27/test.xlsx'))
print data
输出:
Gene Size Function
0 arx1 411 NaN
1 arx2 550 monooxygenase
2 arx3 405 aminotransferase
……
即:调用pandas中read_excel属性,来读取文件test.xlsx,并转换成DataFrame格式,赋给变量data。在每一行后,自动分了一个索引值。除了excel,还支持以下格式文件的导入和写入:
Python写入的方法有很多,但还是不如excel方便。常用的例如使用相等长度的字典或numpy数组来创建:
data1 = DataFrame(
{'Gene':['arx1','arx2','arx3'],
'Size':[411,550,405],
'Func':[np.NaN,'monooxygenase','aminotransferase ']})
print data1
输出
Func Gene Size
0 NaN arx1 411
1 monooxyg arx2 550
2 amino arx3 405
分配一个行索引后,自动排序并输出。
在python中,可以使用info()函数查看整个数据的详细信息。
print data.info()
输出
RangeIndex: 7 entries, 0 to 6
Data columns (total 3 columns):
Gene 7 non-null object
Size 7 non-null int64
Function 5 non-null object
dtypes: int64(1), object(2)
memory usage: 240.0+ bytes
None
此外,还可以通过shape, column, index, values, dtypes等函数来查看数据维度、行列组成、所有的值、 数据类型:
print data1.shape
print data1.index
print data1.columns
print data1.dtypes
输出
(3, 3)
RangeIndex(start=0, stop=3, step=1)
Index([u'Func', u'Gene', u'Size'], dtype='object')
Func object
Gene object
Size int64
dtype: object
在excel中可以按“F5”,在“定位条件”中选择“空值”,选中后,输入替换信息,再按“Ctrl+Enter”即可完成替换。
在python中,使用函数 isnull 和 notnull 来检测数据丢失, 包含空值返回True,不包含则返回False。
pd.isnull(data1)
pd.notnull(data1)
也可以使用函数的实例方法,以及加入参数,对某一列进行检查:
print data1['Func'].isnull()
输出
Func Gene Size
0 True False False
1 False False False
2 False False False
再使用fillna对空值进行填充:
data.fillna(value=0)
#用0来填充空值
data['Size'].fillna(data1['Size'].mean())
#用data1中Size列的平均值来填充空值
data['Func']=data['Func'].map(str.strip)
#清理Func列中存在的空格
Excel中可以按“Ctrl+F”,可调出替换对话框,替换相应数据。
Python中,使用replace函数替换:
data['Func'].replace('monooxygenase', 'oxidase')
将Func列中的'monooxygenase'替换成'oxidase'。
Excel中,通过“数据-筛选-高级”可以选择性地看某一列的唯一值。
Python中,使用unique函数查看:
print data['Func'].unique()
输出
[nan u'monooxygenase' u'aminotransferase' u'methyltransferase']
Excel中,通过UPPER、LOWER、PROPER等函数来变成大写、小写、首字母大写。
Python中也有同名函数:
data1['Gene'].str.lower()
Excel中可以通过“数据-删除重复项”来去除重复值。
Python中,可以通过drop_duplicates函数删除重复值:
print data['Func'].drop_duplicates()
输出
0 NaN
1 monooxygenase
2 aminotransferase
3 methyltransferase
Name: Func, dtype: object
还可以设置“ keep=’last’ ”参数,后出现的被保留,先出现的被删除:
print data['Func'].drop_duplicates(keep='last')
输出
2 aminotransferase
3 methyltransferase
6 monooxygenase
8 NaN
Name: Func, dtype: object
内容参考:
Python For Data Analysis
蓝鲸网站分析博客,作者蓝鲸(王彦平)
python的内建函数即是python自带的函数,这种函数不需要定义,并且不同的内建函数具有不同的功能,可以直接使用。
以下是部分内建函数用法及说明
1、abs(),返回数字的绝对值。
2、all(),如果集合中所有元素是true或集合为空集合,返回True。
3、any(),如果集合中有一项元素是true,返回True;空集合为False
4、ascii(), 返回一个表示对象的字符串。
5、bin(),将整数转换为前缀为“0b”的二进制字符串。
6、bool(),返回一个布尔值,即True或者之一False。
7、bytearray(),返回一个新的字节数组。
8、callable(对象)判断对象参数是否可被调用(可被调用指的是对象能否使用()括号的方法调用)
9、chr(),返回表示Unicode代码点为整数i的字符的字符串。与ord()函数相反。
推荐学习《python教程》
10、classmethod,将方法转换为类方法。
11、compile,将源代码编译为代码或AST对象。代码对象可以由exec()或执行eval()。 source可以是普通字符串,字节字符串或AST对象。
12、dic(),创建一个字典
13、divmod(a,b),将两个数作为参数,并在使用整数除法时返回由商和余数组成的一对数
14、enumerate(iterable,start = 0)
enumerate是枚举、列举的意思
对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
enumerate多用于在for循环中得到计数
15、eval,将一个字符串变为字典
16、exec(object [, globals[, locals]])exec语句用来执行储存在字符串或文件中的Python语句
17、filter(功能,可迭代)
filter函数用于过滤序列
filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
通过标准的Python库导入CSV文件:
Python提供了一个标准的类库CSV文件。这个类库中的reader()函数用来导入CSV文件。当CSV文件被读入后,可以利用这些数据生成一个NumPy数组,用来训练算法模型: