7/18 星期三
已办事项:
- 注册用户,熟悉了Confluence的基本使用。
- 了解并部署开发环境,针对python2.7的基本语法进行学习。
- 类比IDEA,熟悉了PyCharm的基本操作。
- 飞鸽工具的注册使用。
- VS code中调试python程序。
Python学习记录:
1. 关于Python语法上的问题,尤其是针对不变对象的使用上要注意。类比基本数据类型和引用数据类型。
2. 语句结束无需分号,语句块衔接采用冒号。
3. 格式化输出类比C语言样式。
4. 字符编码问题需要注意下。
5. 转义字符'\':针对相关字符如\n \t \\ 进行转义,打印% 采用 %% 形式 消除转义r''
6. 空值操作 None 不能理解为0,0是有意义的,而None是一个特殊的空值。
7. 数据类型:
内置有序集合:
list 列表 有序集合
tuple元组 不可变 代码安全性高 定义时就元素就应该确定。不可变对象
dict 字典 key-value 空间换时间的存储手段
set 集合 key集合
8. Python语言是动态语言,变量类型随时可以更改。
9. *args是可变参数,接收的是一个tuple。
待办事项:
- 继续学习python3相关语法。数据库读写方面,绘图功能方面。
- SVN版本控制管理工具的学习使用。
- Markdown文本编辑器的学习使用。
7/19 星期四
已办事项:
- 学习Python3基本语法。
- 实现了Python访问MySQL数据库,并实现了简单的CURD操作。
- 了解Python中matplotlib绘图库,对语法进行了研究。额外了解了seaborn可视化组件,提供了多种复杂的绘图功能。
- 开始着手学习pandas数据分析库。
- SVN版本控制管理基本工具的使用。
Python学习记录:
- 可变参数的使用kw, 拓展函数功能。例如提交用户表单,非必填项就可以为可变参数。kw接收的是一个dict。
- 命名关键字参数,限制关键字参数的名字。只接受某些变量作为关键字参数。
-
递归函数,定义简单,逻辑清晰。
需要注意:
使用递归函数要注意防止栈溢出,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的。所以,调用测试过多,会导致栈溢出。
解决方法:尾递归优化 -- 循环也是一种特殊的尾递归
尾递归是指:在函数返回的时候,调用函数本身。并且,return语句不能包含表达式(例如乘法)。这样,编译器或者是解释器可以
把尾递归做优化,使得递归无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。 -
访问数据库 MySQL
步骤:
1. 导入pymysql
2. 建立数据库连接
3. 获取游标
4. 构建SQL语句
获取单条数据:cur.fetchone()
获取所有数据:cur.fetchall()
所影响的行数:rowcount 只读属性
5. 执行查询 -- 提交
6. 异常处理 -- 回滚
7. 关闭连接 -
关于绘图 -- 数据分析 + 绘图展示
matplotlib:交互式绘图控件,直线图,散点图,饼图,柱状图,折线图等。
seaborn:种类繁多的绘图功能。
pandas:数据分析必须掌握的一个库。 -
panda数据分析
采用了科赛网上的习题集,进行pandas的数据分析练习。
https://www.kesci.com/apps/home/project/59e77a636d213335f38daec2
pandas基础命令速查表:
https://www.kesci.com/apps/home/project/59e389b54663f7655c48f518
待办事项:
- 继续学习Python3相关语法。
- pandas基础语法以及案例实现。
- 数据展示平台。
7/20 星期五
已办事项:
- 学习pandas数据分析相关语法。
- 配置更新本地maven dependency仓库。
- 虚拟机中静态IP的配置。
- Linux下yum命令的学习。
- 虚拟机环境下配置Zabbix。
Python学习记录:
-
pandas数据选取
根据数据展示方式的不同,数据选取方式也不同
DataFrame 数据框
df = pd.DataFrame(np.random.rand(5, 5), columns = list('ABCDE'))
df[['B', 'E']] -- 按照列名选取
df.iloc[0, :] -- 选取第一行
Series 数组
s = pd.Series(np.array(['I', 'Love', 'Data']))
s.iloc[0] -- 按照任意位置选取
s.loc['index_one'] -- 按照索引选取 -
数据清洗
DataFrame:
pd.isnull(df) -- 检查数据空值出现的情况,返回由布尔型组成的列
pd.notnull(df) -- 检查数据非空值出现的情况,返回由布尔型组成的列
df.dropna() -- 移除数据框DataFrame中包含空值的行
df.dropna(axis = 1) -- 移除数据框DataFrame中包含空值的列
df.fillna(x) -- 空值替换
df.rename(columns = lambda x: x + 2) --选择列重命名
columns = {
'old_name',
'new_name'
}
df.set_index('index_name') -- 改变索引
Series:
s.fillna(s.mean()) -- 将空值用平均值替代
s.astype(float) -- 将数组元素格式化为浮点数
s.replace([1, 9], ['one', 'nine']) -- 将数组元素中的9用nine替代,list整体替换也可以 -
数据过滤,排序
df[df[col_name] > num1 & df[col_name] < num2] -- 选取数据框中列名下元素满足要求的记录(元组)
df.sort_values(
['col1', 'col2'] ,
ascending = [True, False]
) -- 按照数据框的col1升序,col2降序
Zabbix部署记录:
- 准备LAMP环境,拥有独立IP的虚拟机(静态IP)。
- 虚拟机端部署Zabbix-Server端,被控端部署Zabbix-Agentd端。
- 由于Centos7不支持MySQL,数据库方面采用了mariadb。
- 禁用防火墙,设置开机自启服务。
- httpd,Linux环境下Apache超文本传输协议(HTTP)服务器的主程序。
- yum命令的使用规范,命令被锁后的解决方案。
- netstat网络工具的安装:yum install net-tools。
- 目前现状如下图:
Get value from agent failed: ZBX_TCP_READ() failed: [104] Connection reset by peer
待办事项:
- pandas中数据分组语法重点理解。
- Zabbix监控平台问题解决。