环境部署
解决pycharm无法导入本地包的问题(Unresolved reference 'tutorial')
①清除缓存并重启(File——>Invalidate Caches\Restart)
②设置源目录
基本常识
print("祝各位身体健康", end=' ,')
此处以,
替换默认的换行符\n
在Python中,StringVar是可变字符串,get()和set()是得到和设置其内容
Tkinter
基本常识
Debug
tkinter.messagebox.showinfo doesn't always work
这是导入方式的一个问题,如果你直接
import tkinter
可能会出现如上错误,需替换成import tkinter.messagebox
或者from tkinter import messagebox
。
数据科学
环境部署
基本常识
Numpy
用法:zeros(shape, dtype=float, order='C')
返回:返回来一个给定形状和类型的用0填充的数组;
例子:
np.zeros(5)
array([ 0., 0., 0., 0., 0.])
reshape函数改变调用数组的形状并返回该数组
numpy.clip(a,a_min,a_max,a=None)
的运用:
方法解释:Clip(limit)the values in the array.
这个方法会给出一个区间,在区间之外的数字将被剪除到区间的边缘,例如给定一个区间[0,1],则小于0的将变成0,大于1则变成1.
nonzeros(a)
返回数组a中值不为零的元素的下标,它的返回值是一个长度为a.ndim(数组a的轴数)的元组,元组的每个元素都是一个整数数组,其值为非零元素的下标在对应轴上的值。
axis=0表述列
axis=1表述行
从字面上是插入新的维度的意思
Join a sequence of arrays along an existing axis.
numpy.NAN
来标记不合法的值,也即不是真实的值。
Pandas
Series 是一个一维数组结构的,可以存入任一一种python的数据类型(integers, strings, floating point numbers, Python objects, etc.)。
当数据中存在NaN缺失值时,我们可以用其他数值替代NaN,主要用到了DataFrame.fillna()方法
假如数据量比较大或者有冗余,我们可以删掉有缺失值的数据,你可以选择删除行或者删除列,用的都是DataFrame.dropna(),当然Series也有dropna方法,用法相同。
pandas数据结构介绍
两个数据结构:Series和DataFrame。
Series是一种类似于以为NumPy数组的对象,它由一组数据(各种NumPy数据类型)和与之相关的一组数据标签(即索引)组成的。可以用index和values分别规定索引和值。如果不规定索引,会自动创建 0 到 N-1 索引。
DataFrame是一种表格型结构,含有一组有序的列,每一列可以是不同的数据类型。既有行索引,又有列索引,可以被看做由Series组成的字典(使用共同的索引)。跟其他类似的数据结构(比如R中的data.frame),DataFrame面向行和列的操作基本是平衡的。其实,DataFrame中的数据是以一个或者多个二维块存放的(不是列表、字典或者其他)。
Sklearn
有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。
数据挖掘通常包括数据采集,数据分析,特征工程,训练模型,模型评估等步骤。使用sklearn工具可以方便地进行特征工程和模型训练工作
Matplotlib
①在计算机中找到字体,选择一种中文字体
②右键可以查看其属性从而得知字体名称
③然后在程序中定义Matplotlib的字体管理,这里将其命名为zhfont1,代码如下:
zhfont1 = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\simkai.ttf')
④最后在legend中通过prop参数进行调用:
plt.legend(prop=zhfont1)
一个图像(figure)意味着用户界面的整个窗口。在一个图像中可以有些子区(subplot)。subplot将绘图放置在常规的网格位置上而axes允许更自由的放置。
显示图例
Debug
-
UnicodeDecodeError : 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)
在anaconda shell 里面使用pip install 总是报错'ascII' can't decode,该如何解决?
可以尝试升级下anaconda版本哦!!!
万一是小括号误写成中括号呢?
P.K.
首先声明两者所要实现的功能是一致的(将多维数组降位一维),两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩阵,而numpy.ravel()返回的是视图(view,也颇有几分C/C++引用reference的意味),会影响(reflects)原始矩阵。
这里应该是拿min/max(更适合处理可迭代对象,可选的参数是key=func)与np.min/np.max(可适合处理numpy.ndarray对象,可选的参数是axis=0或者1)作比较,只不过np.argmin/np.argmax的用法与np.min/np.max相似,这里就不进行更正了。
①函数的功能不同
前者返回值,后者返回最值所在的索引(下标)
②处理的对象不同
前者更适合处理list等可迭代对象,而后者自然是numpy里的核心数据结构ndarray(多维数组)
③函数类型不同
min/max是Python内置的函数
np.argmin/np.argmax是numpy库中的成员函数
④接口不同
min(iterable, key=func)->value
np.argmin(a, axis=None)
常见的接口如上所示,前者除了一个可迭代对象外,还接收一个函数对象(keyword argument),用于指定比较的对象(也即最值比较的内容是,将迭代对象中的元素逐个赋予func函数对象所得到返回值),可见func只可接受一个参数,如min(dict, key=dict.get)。而np.argmax更多的是进行轴上的比较(axis=0,也是默认的轴,是列向)
arange()
类似于内置函数range(),通过指定开始值、终值和步长创建表示等差数列的一维数组,注意得到的结果数组不包含终值。
linspace()
通过指定开始值、终值和元素个数创建表示等差数列的一维数组,可以通过endpoint参数指定是否包含终值,默认值为True,即包含终值。
功能与split一样,唯一的区别是 array_split allows indices_or_sections to be an integer that does not equally divide the axis.(也就是说,你有一个array,里面如果有9个元素,你想把它分成3份,
split
和array_split
都没有问题,每份3个元素呗,但如果你想把它分成2份,那么问题来了,我不能一份4.5个吧,所以这时候split就会报错,而array_split可以实现这种不均等的分割,比如第一份5个,第二份4个)
实战演练
Python将图片转换成字符画
Debug
如果你没有PIL模块,想通过pip进行安装的话,可能会报错如下:
could not find a version that satisfies the requirement……
于是手动到官网下载(注:此处没有x64版本可下载,只能下载32位的了),下载得到PIL-1.1.7.win32-py2.7.exe,
就像作者的第二篇文章所述:
Python安装第三方库PIL时失败的解决办法
但也许,我们未必如作者般那么幸运:手动安装,会自动识别之前安装的Python路径,一路默认就可以了
兴许还会半路来个拦路虎,比如这个:
此时,你可能需要执行下如下文章所述的脚本:
【已解决】PIL安装异常 “python version 2.7 required, which was not found in the registry.”
然而,当你以为一切都大功告成时,满心欢喜地run了起来,也许还会蹦出个这个:
ImportError: The _imaging C module is not installed
那就pip install pillow
下吧~
PIL The _imaging C module is not installed
Python3.0+requests爬取百度贴吧帖子
Python2.7网络爬虫---简单的爬取百度贴吧的小爬虫
(注:如上文作者是通过Python2.7+urllib2进行爬取的)
基本常识
Python zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。
Debug
我的一个初衷是:我爬取下来的html,浏览器打开后内容图片和中文都可以正常的显示,而不是乱码或者content的字节所以当初衷达不到的时候,一开始的怀疑点落在了requests库的中文编码上了:
代码分析Python requests库中文编码问题
然而当按照如上文所述的编码格式进行设置后,依旧不能如愿,于是乎,就想着会不会是我想打开写入的那个文件的编码问题呢?于是参考如下文章,得以如愿:
python自然语言编码转换模块codecs介绍
用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode
file = codecs.open("dddd.txt", 'r', "utf-8")
如果使用语言内建的open函数来打开文件,输出必定是乱码。
网友评论