一.Python中所有的类成员(包括数据成员)都是公共的 ,所有的方法都是有效的。
只有一个例外:如果你使用的数据成员名称以双下划线前缀 比如__privatevar,Python的名称管理体系会有效地把它作为私有变量。
二. 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。
对象:它是类的实例化。
方法:类中定义的函数。
三.__init__
方法的第一参数永远是self
,表示创建的类实例本身,
四.在__init__
方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身
五.pandas中的loc和iloc
loc是根据index来索引;
iloc是根据行号来索引,行号从0开始,逐次加1。
例如:print(table.iloc[0])
print(table.loc['a'])
loc[0, :]是取所有的意思
六. .shape[0]用来获取行数
.shape[1]用来获取列数
七.列表可以随意改变长度!
八.用class是为了让代码更加整洁
九.Python引入了with
语句来自动帮我们调用close()
方法,这和前面的try ... finally
是一样的,但是代码更佳简洁,并且不必调用f.close()
方法。
十.文件的读写方式列表
十一.json.dumps()用于将字典形式的数据转化为字符串,json.loads()用于将字符串形式的数据转化为字典。
十二.如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到json.dump(),
json.load()用于从json文件中读取数据.
十三.os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
十四.header :指定作为列名的行,默认0,即取第一行,数据为列名行以下的数据;若数据不含列名,则设定 header = None;#数据不含作为列名的行
In [21]: sheet = pd.read_excel('example.xls',sheetname= 1,header = None)
In [22]: sheet
Out[22]:
0 1 2 3
0 1 3 5 学生
1 2 3 4 老师
2 4 1 9 教授
#默认第一行数据作为列名
In [23]: sheet = pd.read_excel('example.xls',sheetname= 1,header =0)
In [24]: sheet
Out[24]:
1 3 5 学生
0 2 3 4 老师
1 4 1 9 教授
十五.
pandas中pd.read_excel()方法中的converters参数
pandas的pd.read_excel()方法读取excel文件时,遇到某一列的数据前面包含0(如010101)的时候,pd.read_excel()方法返回的DataFrame会将这一列视为int类型,即010101变成10101。
这种情况下,如果想要保持数据的完整性,可以以str类型来读取这一列,具体的实现如下:
1 df = pd.read_excel ("test.xlsx" , converters={'类别编码':str})
如上代码,即可将"test.xlsx"文件的"类别编码"一列读取为str对象类型。
十六.Python 字典(Dictionary) keys() 函数以列表返回一个字典所有的键。
注意返回的是键哦
十七.
以下实例展示了 zip 的使用方法:
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
十八.enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
以下展示了使用 enumerate() 方法的实例:
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1)) # 下标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
普通的 for 循环
>>> seq = ['one', 'two', 'three']
>>> for element in seq:
... print i, seq[i]
... i +=1
...
0 one
1 two
2 three
for 循环使用 enumerate
>>> for i, element in enumerate(seq):
... print i, element
...
0 one
1 two
2 three
pandas 中 inplace 参数在很多函数中都会有,它的作用是:是否在原对象基础上进行修改
inplace = True:不创建新的对象,直接对原始对象进行修改;
inplace = False:对数据进行修改,创建并返回新的对象承载其修改结果。
默认是False,即创建新的对象进行修改,原对象不变,和深复制和浅复制有些类似。
二十.Pandas的to_csv()函数用于将DataFrame转换为CSV数据。
要将CSV数据写入文件, 我们只需将文件对象传递给函数即可。否则, CSV数据以字符串格式返回。
DataFrame.to_csv(path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None, header=True,
index=True, index_label=None, mode='w',encoding=None, compression='infer', quoting=None, quotechar='"',
line_terminator=None, chunksize=None, date_format=None, doublequote=True, escapechar=None, decimal='.')
# index:如果将值设置为True, 则CSV数据中将包含索引。否则, 索引值不会写入CSV输出中。
# encoding:这是一个可选参数, 由字符串值组成, 该字符串值表示在输出文件中使用的编码。编码的默认值为UTF-8
二十一.
def 函数名(参数 1 ,参数 2 ,参数…): 函数体(语句块) return [返回值] |
XXXXXX.__init__在类中被用做构造函数
例如我们定义一个Box类,有width, height, depth三个属性,以及计算体积的方法:
1
2
3
4
5
6
7
8
9
10
|
class Box: def setDimension( self , width, height, depth): self .width = width self .height = height self .depth = depth def getVolume( self ): return self .width * self .height * self .depth b = Box() b.setDimension( 10 , 20 , 30 ) print (b.getVolume()) |
我们在Box类中定义了setDimension方法去设定该Box的属性,这样过于繁琐,而用__init__()这个特殊的方法就可以方便地自己对类的属性进行定义,__init__()方法又被称为构造器(constructor)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class Box: #def setDimension(self, width, height, depth): # self.width = width # self.height = height # self.depth = depth def __init__( self , width, height, depth): self .width = width self .height = height self .depth = depth def getVolume( self ): return self .width * self .height * self .depth b = Box( 10 , 20 , 30 ) print (b.getVolume()) |