一、apply&applymap&map
- apply 用在dataframe上,用于对row或者column进行计算;
- applymap 用于dataframe上,是元素级别的操作;
- map (其实是python自带的)用于series上,是元素级别的操作。
f = lambda x: x.max() - x.min()
lambda,临时函数
df.apply(f,axis=0)
axis决定作用的维度,axis=1作用在一行上,axis=0作用在一列上,默认axis=0
f2 = lambda x: x+1 if x%2==0 else x
df.applymap(f2)
def sq(x): return x**2 m=map(sq,df['id'])
list(m)
list(m)
map只返回一个迭代器,第一次list(m)后会把其中的值展示出来,但第二次list(m)之后就是空的了
二、type//dtypes//astype
type(a)
自带,返回变量的数据类型,如果a是dataframe就返回dataframe
b.dtypes
返回数组中元素的数据类型,对于dataframe是每一列的数据类型
a.astype(int)
更改数据类型,比如浮点改为int,或者用简单的方法更改:
- int():将一个数值或字符串转换成整数,可以指定进制;
float():将一个字符串转换成浮点数;
str():将指定的对象转换成字符串形式,可以指定编码;
chr():将整数转换成该编码对应的字符串(一个字符);
ord():将字符串(一个字符)转换成对应的编码(整数)。
三、占位符&循环&倒置&排序
- %d整数,%f小数,%%表示百分号,%s 字符串
print('%d / %d = %.2f' % (a, b, a / b))
%.2f保留两位有效函数
d=str(input('d = ')) print('my name is %s' %(d))
\代表拆行
break
:终止循环
continue
:放弃本轮循环,开始新一轮循环
print(,end='')
print函数,默认end='\n'换行符
字符串/list倒置
b = 123456
c = list(str(b))
c.reverse()
排序函数:
sorted(iterable[,cmp[,key[,reverse]]])
rt = sorted(example_list, key=lambda x: x*-1)
list.sort(L, key=None, reverse=False)
其中sorted函数的参数含义如下:
- iterable -- 可迭代对象。
- cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
- key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)
sort函数的参数含义:L代表要排序,key代表的是用于排序的比较元素,reverse同上面一致。
总体来看,sort只能用于列表的排序,效率也更快,消耗的内存较小,而且是直接对列表进行操作,所以会改变列表的原始值。而sorted函数的可以应用于各种数据结构,范围更加广泛,不过它会调用一个新的数据结构来进行操作,不会更改原数据,所以效率会略低一点。
四、字符串
-
+
字符串的拼接; -
*
重复; -
in,not in
判断一个字符串是否包含另外一个字符串,
print('eo' in 'hello')
False,不连续的 -
[]
截取,[::-1]
,倒序,[::2]
,间隔取 -
str1='abc123456'
print(str1.find('bc'))
返回首次出现的位置
print(str1.find('bd'))
返回-1,代表不存在
str.rfind(str1,begin_pos,end_pos)
返回指定字符串最后一次出现的位置
print(str1.index('bd'))
报错
str.count('substr')
统计字符出现的次数
print(str1.center(50, '*'))
,将字符串居中,左右用*填充
str.strip()
清除字符串左右两侧的空格,但中间的空格清除不了 - 格式化输出除了占位符之外的另外两种方法:
a, b = 5, 10
print('{0} * {1} = {2}'.format(a, b, a * b))
print(f'{a} * {b} = {a * b}')
五、列表
list1=[1,2,3,4]
enumerate函数
-
for index, elem in enumerate(list1):
····print(index, elem)
-
添加元素:
list1.append(2)
末尾添加2
list1.append(2,3)
不行,一次只能添加一个
list1.append([2,3])
,末尾添加一个元素[2,3],变成[1,2,3,4,[2,3]]
///list1.insert(1,400)
前面依次插入两个元素,一个数占一个位置[1,400,1,2,3,4]
但3.7版本使用方式变了:
list.insert(position,x)
第一个参数是插入的位置,第二个参数是插入的元素,list1.insert(1,[2,3])=[1,[2,3],3,4]
-
删除元素
list1=[1,2,3,4,1,2,3]
list1.remove(2)
得到[1,3,4,1,2,3]
只删除第一个遇到的元素
list1.pop(position)
按照位置删除元素 -
切片
所有切片都是包左不包右,[-3:-1]
不能提取最后一个元素; -
生成式语法
f=[x + y for x in 'ABCDE' for y in '1234567']
x+y:两个字符拼接,后面等同于:
f=[]
for x in 'ABCDE':
····for y in '1234567':
········f.append(x+y)
f1=(x**2 for x in range(1,1000))
生成器
f=[x**2 for x in range(1,1000)]
list
生成器的内存占用远远小于list(sys.getsizeof()查看内存)
通过yield将普通函数改造成生成器
def fib(n):
····a, b = 0, 1
····for _ in range(n):
········a, b = b, a + b
········yield a
def main():
····for val in fib(20):
········print(val)
if __name__ == '__main__':
····main()
只运行fib函数的话,返回的是一个生成器
六、集合
- 没有重复元素
set1={1,2,3,4,5,1}
print(set1) >>{1,2,3,4,5}
set2=set( (1,2,4,3,2,1))
orset2=set( [1,2,4,3,2,1])
- 元素的增减
set1.add()
set1.update([])
orset1.update(())
作用等同于add,
set1.update(9)
不行,
set3=set([1,2,[1,2],[3,4]])
!!!unhashable type: 'list'
set1.discard(5)
&set1.remove(5)
删除元素
set1.pop()
返回的是被删除的在第一位的元素,之后的set1没了一个元素 - 运算
交集:&
并集:|
差集:-
或否:^ ,返回只存在于一个集合之中的元素的集合
判断子集和超集
print(set2 <= set1)
,print(set2.issubset(set1))
print(set1 >= set2)
,print(set1.issuperset(set2))
- !!!对python而言
其一, 在不加括号时候, and优先级大于or
其二, x or y 的值只可能是x或y. x为真就是x, x为假就是y
第三, x and y 的值只可能是x或y. x为真就是y, x为假就是x
七、字典
key:value
dict.keys()
返回key的列表
- 构造字典的方法:
1)dict={key:value,...}
2)dict2=dict(key=value,...)
,如item=dict(one=1,two=2)
其中key不能加引号
3)zip函数items2 = dict(zip(['a', 'b', 'c'], '123'))
4)推导式item3={num:num*2 for num in range(0,10)}
- 更改字典的值
1)dict.update(key=value,...)
可以修改现有key对应的value,也可以添加新的key-value对
2)items2.popitem()
返回被删除的最后一个位置的元素
3)items.pop(key1,key2...)
按key删除,返回被删除的values值
4)dict.clear()
清空 - 返回最大值对应的key:
max(items2,key=items2.get)
网友评论