搭建数据分析环境主要包括使用anaconda管理包和环境;使用Jupyter notebook将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中。Python基础知识包括关键点(数据类型、for循环、条件判断、函数)、模块和包、数据结构(队列、栈、排序字典、计数器)
一、环境搭建
一、anaconda
1.管理包:
conda list:列出已安装包
conda install pandas或pip install pandas:安装Pdans包
conda remove pandas:卸载包
conda update package_name:更新包
conda upgrade --all:更新所有包
conda search pandas:查找包
注:python环境、conda、anaconda也可看做包
2.管理环境
conda install nb_conda:安装nb_conda用于notebook自动关联nb_conda的环境。
(1)创建环境
conda create -n env_name package_names:env_name 是设置环境的名称(-n 是指该命令后面的env_name是你要创建环境的名称),package_names 是你要安装在创建环境中的包名称。
conda create -n py3 python=3 :创建名为py3的环境,同时指定python版本
(2)进入环境
activate my_env:
(3)离开环境
deactivate
(4)共享环境
conda env export > environment.yaml:以YAML文件形式,导出环境文件到“notebook工作文件夹”
conda env update -f=/path/to/environment.yml:在conda环境下更新
pip freeze > environment.txt:以txt文件形式,导出环境文件到“notebook工作文件夹”
pip install -r /path/requirements.txt:在python环境下更新
(5)列出环境
conda env list:列出创建的所有环境
(6)删除环境
conda env remove -n env_name
或conda remove -n env_name --all
3.报错处理
(1)创建环境报错时出现CondaHTTPError,详情如下图:
解决方法:
在conda安装好之后,默认的镜像是官方的,将官方镜像改为清华的的镜像。然后在用户home目录下,找到 .condarc 文件,以txt形式打开,删掉channels下面的 -defaults一行
二、Jupyter notebook
Jupyter notebook(http://jupyter.org/) 是一种 Web 应用,能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中。
1.环境搭建
conda install jupyter notebook或pip install jupyter notebook:在conda环境中安装jupyter notebook
conda install nb_conda:将conda中创建的环境自动关联到notebook中
conda install pyreadline:代码自动补全包(输入代码时按TAB键可自动补全)
2.启动
(1)windows开始菜单找notebook打开
(2)在终端输入 jupyter notebook,启动notebook服务器后,在浏览器中打开notebook页面地址:http://localhost:8888
3.操作
界面介绍files (文件)当前notebook工作文件夹中的所有文件和文件夹,running(运行)所有正在运行的notebook,管理notebook, cluster(集群)一般不会用,创建多个并行计算的内核
创建新的notebook,file-new-选择我已创建的环境py3,会弹出新的窗口,输入代码,ctrl+enter执行,
代码自动补全功能:输入部分代码后按tab键,可以联想带出
notebook重命名:file-rename或双击现有名称
运行所有代码:kemel-restart&run all
4.保存
查看已保存的文件:我的路径是C:\用户\hty,保存的的扩展名为.ipynb的文件
共享notebook:在notebook中file-download as:
(1)HTML文件:和客户分享我的数据分析成果
(2)python(.py):将数据分析成果嵌入到项目中
(3)markdown:在博客或文档中使用notebook
5.导入
upload-选择文件-上传
6.关闭
关闭notebook:首先保存notebook,在file选中文件复选框,单击close and Halt
关闭jupyter notebook:在终端按两次ctrl+c
二、掌握Python的4个关键点
1.数据
(1)字符串(String)
#定义字符串
Str1='python3'
Str2='数据分析'
#用%s格式化字符串
str='使用%s,进行%s' % ('Python3','数据分析')
(2)数值(Number)
#整型(Int)
str1=10
#浮点型(float)
str2=10.0
#复数 (complex)
str3=3.14j
(3)列表(List)
列表可以完成大多数集合类的数据结构实现。
#定义列表
skillList=['Excel','Python','Mysql','SPSS']
#列表长度
skillListLen=len(skillList)
#操作:增加
nameList.append('SAS')
#操作:删除
del skillList[1]
#操作:查询
skill1=skillList[0]
注:使用下标索引来访问列表中的值
skill2=skillList[1:3:1]
注:查找表中第2到3个元素(左闭右开),步长为1,
#操作:修改
nameList[0]='PyCharm'
(4)集合(Sets)
基本功能是进行成员关系测试和删除重复元素。
#定义集合
gafataSets={'腾讯','阿里巴巴','苹果','谷歌','Facebook','亚马逊','亚马逊'}
#操作:增加
stockSets=set()
stockSets.update(['腾讯','阿里巴巴','京东'])
注意定义空集合需使用set(),如stockSets=set()
#操作:删除
stockSets.discard('京东')
#操作:查询
txBool='腾讯' in stockSets
#操作:修改
stockSets.discard('京东')
stockSets.update(['京东'])
注意:先删除,再添加
(5)字典(Dictionary)
#定义字典
patientDict1={'01':'张一','02':'张二','03':'张三','04':'张四'}
patientDict2={'01':['张一','19','2型糖尿病', '好转'],
'02':['张二','29','1型糖尿病', '未见好转'],
'03':['张三','31','2型糖尿病', '显著好转'],
'04':['张四','25','1型糖尿病', '好转'],}
#操作:增加
patientDict2['05']=['张五','25','1型糖尿病', ‘显著好转']
#操作:修改
patientDict2['01']=['张一','19','2型糖尿病', '显著好转']
#容器操作:查询
patientList1=patientDict2['01']
注:根据key值查询
(6)布尔类型(bool)
True、False
注意:首字母大写;进行数值运算时True视为1,False视为0
(7)空值(None)
age=None
None在逻辑判断中为False
2.条件判断
#逻辑判断
scoreNum=9.1
if scoreNum >= 8:
print("我要去看这部电影")
else:
print("我不要去看这部电影")
#边界条件判断
nameList=['张一','张二','张三','张四']
if '张五' not in nameList:
print('列表中没有叫张五的病人')
else:
print('列表中有个叫张五的病人')
#多条件判断
age=int(input('请输入狗狗的年龄'))
if age < 0:
print('请重新输入')
elif age == 1:
print('狗狗的年龄是7岁')
elif age == 2:
print('狗狗的年龄是14岁')
else:
print('狗狗的年龄是',22+age*2,'岁')
3.for循环
#for循环
eatList=['吃第1次饭','吃第2次饭','吃第3次饭']
for i in eatList:
print(i)
案例:清洗GAFATA股票数据
#定义字典:6家公司(GAFATA)的股票
#key是公司名称,value是股票代码
gafataDict={'谷歌':'Goog','亚马逊':'aMZN','Facebook':'FB',
'苹果':'aapl','阿里巴巴':'BABA','腾讯':'0700'}
#将股票代码全部大写
for key,value in gafataDict.items():
#对股票代码转换成大写
newvalue=value.upper()
#将转换后新的股票代码赋值给对应的key
gafataDict[key]=newvalue
print(gafataDict)
#continue用于跳出当前循环
for key,value in gafataDict.items():
if(key=='苹果'):
continue
print(key,'当前股票代码为',value)
#break用于退出整个循环
for key,value in gatafaDict.items():
if (key=='腾讯'):
print('查找',key,'公司的代码是',value)
break
else:
print('当前公司:',key,',当前股票代码:',value)
4.函数
#定义函数
def add(x,y):
z=x+y
return z
#使用函数
a=1
b=2
c=add(x=a,y=b)
print('1和2相加等于',c)
# 函数参数:不可变数据类型(仅传递值)
# 函数参数:可变数据类型(传引用地址)
def changeInt(a):
a=a+1
b=1
print('调用函数之前b的值=',b)
changeInt(a=b)
print('调用函数之后b的值=',b)
#变量作用域
#局部作用域:只能在其被声明的函数内部访问
def test():
aStr='别理会他人闲言闲语,今日随他们,让他们说吧,你的机会将会到来,再来证明自己。'
三、模块和包
#引入内置模块sys
import sys
#引入第三方模块pandas
import pandas as pd
#文件路径
fileNameStr='C:\htyi\第2关零基础掌握人工智能核心语言Python\数据\病历数据.xlsx'
#读取excel数据
xl = pd.ExcelFile(fileNameStr)
#获取指定工作表(Sheet)名称的数据
patientDf = xl.parse('Sheet1')
四、数据结构
1.队列
#导入collections包
from collections import deque
#定义队列:排队吃饭人的编号
queue=deque(['001','002','003','04','005'])
#入队:在队列尾部插入元素
queue.append('006')
#出队:在队列头部删除元素
queue.popleft()
2.栈
#定义栈:浏览我个人知乎主页的顺序
stack=deque(['知乎动态','知乎回答','知乎文章'])
print(stack)
#入栈:在栈顶加入元素
stack.append('知乎专栏')
#出栈:将栈顶元素移除
stack.pop()
3.排序字典
#OrderedDict:按照插入key的顺序,对字典排序
from collections import OrderedDict
4.计数器
from collections import Counter
cDict = Counter('有一种鸟是永远也关不住的,因为他们的羽毛太光亮了。羽毛太光亮')
#字符串的出现次数
cDict['亮']
#出现次数最多的3个字符
cDict.most_common(3)