2017年12月1日加入猴子老师的数据分析社群,到今日已经过去了一月有余。我从一个小白,逐渐掌握了Python的基础知识。在此感谢社群里帮助过我的小伙伴,比心!
在初识数据分析中,计划12月底完成Python基础的学习任务。这个小目标基本达成,给自己点个赞!下面分享下我的学习过程。
安装分析工具
工欲善其事必先利其器。这里推荐安装anaconda和jupyter,猴子老师整理的安装过程很详细,基本上可能出现的各种问题都可以在里面找到答案。
传送门
猴子老师码字辛苦,所以要认真的一步步按照教程来做。
学习Python基础
按照菜鸟教程里的章节学习即可。如果遇到暂时不懂得,没关系,我的经验是先跳过去,随着后面的学习,前面不懂得地方慢慢就理解了。
重点是多练习,每个章节下面有别人分享的笔记,我建议也看下,开阔下思路。
我本身有C++和Java的基础,对于数据类型、条件判断、循环、函数比较了解。语言不同,但是基本原理相同,区别只在于语法结构,多写几次就能记住了。下面是大概的框架。
数据结构
1.队列
队列是一种“先入先出”的数据结构。
#导入collections包
from collections import deque
#定义队列:排队吃饭人的编号
queue=deque(['001','002','003','04','005'])
#入队:在队列尾部插入元素
queue.append('006')
print(queue)
#出队:在队列头部删除元素
queue.popleft()
print(queue)
第一次print后的结果是
deque(['001', '002', '003', '04', '005', '006'])
第二次print后的结果是
deque(['002', '003', '04', '005', '006'])
由此可看出,新添加的元素被放置到了队尾,而删除元素时是从队首开始的。可以把这个过程想象成我们日常生活中的“排队”。
2.栈
栈是一种“先入后出”的数据结构。
#定义栈:浏览我个人知乎主页的顺序
stack=deque(['知乎动态','知乎回答','知乎文章'])
#入栈:在栈顶加入元素
stack.appendleft('知乎专栏')
print(stack)
#出栈
stack.popleft()
print(stack)
第一次print后的结果是
deque(['知乎专栏', '知乎动态', '知乎回答', '知乎文章'])
第二次print后的结果是
deque(['知乎动态', '知乎回答', '知乎文章'])
由此可看出,新添加的元素被放置到了栈顶,而删除元素时也是从栈顶开始的。可以把栈想象成一个“木桶”,当向木桶添加东西的时候会被放置在木桶的最上面,当从木桶取东西的时候最上方的东西被最先取走。这里要注意append/appendleft/pop/popleft这4个函数操作的位置。
3.排序字典
使用排序字典之前需要先导入collections包里的OrderedDict
from collections import OrderedDict
#定义有序字典
gafataOdDict=OrderedDict({'腾讯':'HK:00700',
'阿里巴巴':'baba',
'苹果':'Apple',
'谷歌':':GOOGLE',
'Facebook':'fb',
'亚马逊':'amzn'})
gafataOdDict
这里得到的结果如下
OrderedDict([('腾讯', 'HK:00700'),
('阿里巴巴', 'baba'),
('苹果', 'Apple'),
('谷歌', ':GOOGLE'),
('Facebook', 'fb'),
('亚马逊', 'amzn')])
可见使用OrderedDict创建的字典,输出时的顺序和我定义的顺序是一样的。这里特别注意OrderedDict是按照插入key的顺序,对字典排序,而不是按照key这个值的顺序排序的。
下面对比Python基础的字典类型。
gafataDict1 = {
'腾讯':'HK:00700',
'阿里巴巴':'baba',
'苹果':'Apple',
'谷歌':'GOOGLE',
'Facebook':'fb',
'亚马逊':'amzn'
}
gafataDict1
这里得到的结果如下
{'Facebook': 'fb',
'亚马逊': 'amzn',
'腾讯': 'HK:00700',
'苹果': 'Apple',
'谷歌': 'GOOGLE',
'阿里巴巴': 'baba'}
对比可以发现,Python基础字典在输出时与我定义时的顺序是不同的。
使用Python对数据进行简单清洗和汇总
应用到使用以下知识点循环批量处理数据
collections包中的计数器Counter
pandas包中的read_csv函数。
1.简单的数据清洗:将所有的股票代码转换成大写
'''定义字典:6家公司(GAFATA)的股票代码key:公司名称value:股票代码'''
gafataDict = {
'腾讯':'HK:00700',
'阿里巴巴':'baba',
'苹果':'Apple',
'谷歌':'GOOGLE',
'Facebook':'fb',
'亚马逊':'amzn'
}
#将股票代码全部大写
for key,value in gafataDict.items():
newValue = value.upper()
gafataDict[key] = newValue
print(gafataDict)
得到的结果如下
{'腾讯': 'HK:00700', '阿里巴巴': 'BABA', '苹果': 'APPLE', '谷歌': 'GOOGLE', 'Facebook': 'FB', '亚马逊': 'AMZN'}
2.简单的数据统计:统计positionName列中与“数据分析”相关的职位数目
DataAnalyst.csv文件中的positionName列用于存放职位名称,其中存在很多与“数据分析”不相关的职位。这里使用3个关键词“数据分析”“数据运营”“分析师”进行筛选匹配,从而得到目标职位。
import pandas as pd
from collections import Counter
dataAnalyst = pd.read_csv(r'DataAnalyst.csv', encoding='gbk')
positionName_col = dataAnalyst['positionName']
#用于存放“数据分析”相关职位
analyst = []
for pn in positionName_col.values:
if pn.find('数据分析')!=-1:
analyst.append(pn)
elif pn.find('数据运营')!=-1:
analyst.append(pn)
elif pn.find('分析师')!=-1:
analyst.append(pn)
else:
continue
positionDic = Counter(analyst)
positionDic.most_common(3)
这里输出与“数据分析”相关的职位中排名前三的职位及数目,如下
[('数据分析师', 660), ('需求分析师', 137), ('分析师', 133)]
以上就是目前全部的学习内容了。期待后面的学习!希望早日学成,用自己的本事,挣一份体面的生活!
码字辛苦,如果对各位看官有那么点帮助就请点个赞吧!