python学习之pandas
最近被各种人工统计浪费了太多时间,才逼的自己学Python了。一个从事AI方向的人,居然还不会用Python,他到底有多水…是时候努力学习一下,这都是提高效率的工具,就想自己当初花时间学git,《鸟哥的Linux私房菜》一样,工具一定要用熟练!!!我目前主要是要处理Excel表格,所以需学一下pandas;又因为Python基本都忘光了,所以还是需要学一下python的基本语法。IDEspyder
最近被各种人工统计浪费了太多时间,才逼的自己学Python了。一个从事AI方向的人,居然还不会用Python,他到底有多水…是时候努力学习一下,这都是提高效率的工具,就想自己当初花时间学git,《鸟哥的Linux私房菜》一样,工具一定要用熟练!!!
我目前主要是要处理Excel表格,所以需学一下pandas;又因为Python基本都忘光了,所以还是需要学一下python的基本语法。
入门资源
(虽然廖雪峰老师的入门教程很流行,但是Python简明教程会帮你再顺一遍)
Python简明教程
廖雪峰python教程
其他资源
- IDE : spyder,比pyCharm好用
- Pandas: 看官网就够了。Pandas 中文
在查找资源上浪费了太多时间,**为什么不直接去官网上看一看呢?**非要看别人博客里二次加工的好理解? - 官方文档:Python官方文档
python官网
https://docs.python.org/3/
强烈推荐速浏览 Python 标准库文档 以获得所有可用的模块。
https://docs.python.org/zh-cn/3/library/
常用语法
迭代
使用for循环来遍历,称为迭代。首先要是个可迭代的对象。
from collections import Iterable
isinstance('abc', Iterable)
- list遍历
l = range(5)
for i in l:
print i
- 元组遍历
d = {'x': 'A', 'y': 'B', 'z': 'C' }
for k,v in d.iteritems(): # 注意,这里并不是for k,v in d
print k,',',v
- 同时打印索引和值,像C++那样
for i,value in enumerate(['A', 'B', 'C']):
print i,value
- 同时引用多个变量
l = [(1,2,3),(4,5,6)]
for x,y,z in l:
print x,y
列表生成式
为什么要有列表生成式?它可以让代码很简洁。同样的构造一个list,体会一下下面两种方式的差别。
L=[]
for x in range(10):
if x % d ==0:
L.append(x*x)
L = range(10)
[x*x for x in L if x % 2 == 0]
可以使用多个变量,对dict
d = {'x': 'A', 'y': 'B', 'z': 'C' }
for k,v in d.iteritems():
print k,'=',v
[k+'='+v for k,v in d.iteritems()]
可见,列表生成式方便的太多了。
生成器
generator。不是一下子就返回所有的数据,而是每次只返回一部分。
使用next返回下一个。
创建generater的两种方式:
- 列表生成式的[]换为()
g = (x*x for x in L if x % 2 == 0)
- 函数内部使用yeild关键字。
每次调用函数时,遇到yeild就返回;第二次调用函数时,会从上一次yeild的下一行执行。
高级技巧/方便技巧(摘抄自Python之禅工作号)
-
用in 代替 or
if x==1 or x ==2: pass if x in (1,2): pass
-
字典代替多个if else
def fun(x): if x == 'a': return 1 elif x == 'b': return 2 else: return None def fun(x): return {"a": 1, "b": 2}.get(x)
-
字典推导式
>>> dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5} >>> double_dict1 = {k:v*2 for (k,v) in dict1.items()} >>> double_dict1 {'a': 2, 'b': 4, 'c': 6, 'd': 8, 'e': 10}
-
集合推导式(只用{ }就表示集合,即c++里面的set,没有重复元素)
>>> set1 = {1,2,3,3,4} >>> double_set = {i*2 for i in set1} >>> double_set {8, 2, 4, 6}
-
列表中出现次数最多的元素
>>> nums = [1,2,3,3] >>> max(set(nums), key=nums.count)
Python简明教程笔记
函数
-
可以定义默认参数值
def say(message, times=1): print(message * times)
-
关键字参数
牛逼!!!!这就是自已一直疑惑的。
就是pandas里面调函数时的index=False,一直没有弄明白!!!def func(a, b=5, c=10): print('a is', a, 'and b is', b, 'and c is', c) func(3, 7) func(25, c=24) func(c=50, a=100)
-
可变参数
def total(a=5, *numbers, **phonebook): print('a', a) # 遍历元组中的所有项 for single_item in numbers: print('single_item', single_item) # 遍历字典中的所有项 for first_part, second_part in phonebook.items(): print(first_part,second_part) print(total(10,1,2,3,Jack=1123,John=2231,Inge=1560))
-
返回两个值
def get_error_details(): return (2,'details')
数据结构
-
字典
key:val使用冒号,key必须是不可变的,比如数字,字符串,字符,元组()d={'1':'abc',2:[3,3,3]} 删除:del d['1'] 添加: d['2'] = range(3) 查询:if '1' in d: 遍历:使用items()或者iteritems() for name, address in ab.items(): print('Contact {} at {}'.format(name, address))
-
序列
列表、元组、字符串都是序列的一种。
序列主要特征:成员测试(如in not in)、索引操作、切片 -
集合,就跟C++里面的set是一样的,没有重复元素
bri = set([‘brazil’, ‘russia’, ‘india’]) -
引用
引用当你创建了一个对象,并把它赋值给一个变量时,这个变量只是 引用 了这个对象,变量并不能代表对象自身!因此,你可以把变量名当作一个指针,它指向储存对象的那一块计算机内存。这称作 绑定 名称到对象,只能通过切片获取副本a=[1,1,1] b=a 这两个变量是指向的同一个对象 b= a[:] #这就是建立副本了
持续更新
更多推荐
所有评论(0)