python语法基础

目录

1.import 和 from … import 模块的变量、方法引用差异

2.python中出现' 'int' object is not callable'的错误

3.seaborn.heatmap(参数介绍)

4. pd.date_range()

5.pd.Series()

6.ARIMA建模的步骤

7.python 中with 用法

8.Python包中__init__.py作用


pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  --user tensorflow==1.15

我把这个放在前面,因为我习惯安装的时候会把TensorFlow安装,这个是在线下载的方式安装,还有离线安装 https://pypi.org/  ,需要什么可以自己下载

可能会遇到各种问题,百度应该都能搜到,我举个例子:

python语法基础_第1张图片

报错信息:protobuf requires Python '>=3.7' but the running Python is 3.6.5

解决方法:更新pip后重新安装tensorflow。

更新命令:python -m pip install --upgrade pip

安装各个包的方法,上面的镜像是清华大学的, --user不加有时候会报错

===================正式开始学习

这个是python小白记录的,本人才开始学这个,如果大神有什么疑义,请批评指正

1.import 和 from … import 模块的变量、方法引用差异

from pandas import DataFrame      from…import  // 直接使用函数名使用就可以了
import pandas as pd            import //模块.函数

a.import…as   

import:导入一个模块;注:相当于导入的是一个文件夹,是个相对路径

import A as B:给予工具库 A 一个简单的别称 B ,可以帮助记忆。例:import torch.nn as nn;import torch as t

b.from…import

from…import:导入了一个模块中的一个函数;注:相当于导入的是一个文件夹中的文件,是个绝对路径。

例:如 from A import b,相当于
 import A
 b = A.b

import //模块.函数,导入模块,每次使用模块中的函数都要是定是哪个模块。
from…import // 直接使用函数名使用就可以了
from…import* // 是把一个模块中所有函数都导入进来; 注:相当于:相当于导入的是一个文件夹中所有文件,所有函数都是绝对路径。

示例:

模块 support.py:

def print_func( par ):
   print "Hello : ", par
   return
# 导入模块
import support 
# 现在可以调用模块里包含的函数了
support.print_func("Runoob")

不能直接使用 print_func() 实现调用,必须将引入的模块名称当作一个对象,调用这个模块对象下的方法 print_func,这时才能实现调用
====================================================

# 导入模块
from support import * 
# 现在可以调用模块里包含的函数了
print_func("Runoob")

可以直接使用 print_func() 实现调用

一般来说,推荐使用 import 语句,避免使用 from … import,因为这样可以使你的程序更加易读,也可以避免名称冲突。

python模块中__init__.py的作用_yucicheung的博客-CSDN博客

=======================================================================

2.python中出现' 'int' object is not callable'的错误

python语法基础_第2张图片

在用spyder写python时,在某一行使用了len函数处提示’int’ object is not callable的错误。
原因是在Variable explorer中存在了一个名为len的变量,这个len变量是在运行别的脚本时定义的,把这个变量清空以后,程序便可正常运行。
所以以后在运行程序时,要养成先把Variable explorer中的变量先清空再运行的习惯。

=======================================================================

3.seaborn.heatmap(参数介绍)

import seaborn as sns

fig, ax = plt.subplots(figsize=(9, 9))
    sns.heatmap(pd.DataFrame(res),
                annot=True, vmax=1, vmin=0, xticklabels=True, yticklabels=True, square=True, cmap="YlGnBu")
    ax.set_title('test', fontsize=18)
    plt.show()



import seaborn as sns
import numpy as np

data = np.array([[1,2,3],[4,5,6],[7,8,9]])
sns.heatmap(data,annot=True)

seaborn.heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None, fmt='.2g', annot_kws=None, linewidths=0, linecolor='white', cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels='auto', yticklabels='auto', mask=None, ax=None, **kwargs)

不如先用最简单的,其实也是最核心的,这里的data是最复杂的参数了,其他的只是用来装饰热力图的,那么这个热力图是用来干嘛的,

就是可视化一下已经有的数字,得到的  res = data.corr(method='spearman')   有很强的可视化效果

那么各个参数具体是什么意思

data:为核心参数,矩形数据集,显示主题图,其他都是装饰:

annot: 默认为False,为True的话,会在格子上显示数字

vmax, vmin: 热力图颜色取值的最大值,最小值,默认会从data中推导

cmap:matplotlib 颜色条名称或者对象,或者是颜色列表,可选参数。从数据值到颜色空间的映射。 如果没有提供,默认值将取决于是否设置了“center”  ,cmap="YlGnBu"

xticklabels, yticklabels:“auto”,布尔值,类列表值,或者整形数值,可选参数。如果是True,则绘制dataframe的列名。如果是False,则不绘制列名,默认为True

返回值:ax:matplotlib Axes
热力图的轴对象

square:布尔值,可选参数。如果为 True,则将坐标轴方向设置为“equal”,以使每个单元格为方形,默认为False

还有很多参数可参考这篇文章:seaborn.heatmap(参数介绍)_hongguihuang的博客-CSDN博客_heatmap参数

这里说一个bug,有时候画的图是半个显示,最上面的和最下面只有半个,据说是所用版本matplotlib的bug

解决办法如下:

ax = sns.heatmap(...);
#把这个直接加入到代码下面就可以了
bottom, top = ax.get_ylim()
ax.set_ylim(bottom + 0.5, top - 0.5)

python语法基础_第3张图片            python语法基础_第4张图片

======================================================================= 

4. pd.date_range()

pd.date_range('1900-1-1', freq="D", periods=len4)

语法:pandas.date_range(start=None, end=None, periods=None, freq='D', tz=None, normalize=False, name=None, closed=None, **kwargs)

该函数主要用于生成一个固定频率的时间索引,在调用构造方法时,必须指定start、end、periods中的两个参数值,否则报错。

主要参数说明:

periods:固定时期,取值为整数或None

freq:日期偏移量,取值为string或DateOffset,默认为'D'   (天)

normalize:若参数为True表示将start、end参数值正则化到午夜时间戳

name:生成时间索引对象的名称,取值为string或None

eg:   a1 = pd.date_range('1900-1-1', freq="D", periods=10)

DatetimeIndex(['1900-01-01', '1900-01-02', '1900-01-03', '1900-01-04',
               '1900-01-05', '1900-01-06', '1900-01-07', '1900-01-08',
               '1900-01-09', '1900-01-10'],
              dtype='datetime64[ns]', freq='D')

======================================================================= 

5.pd.Series()

series是一个一维数组,是基于NumPy的ndarray结构。Pandas会默然用0到n-1来作为series的index,但也可以自己指定index(可以把index理解为dict里面的key)

Series([data, index, dtype, name, copy, …])   

pd.Series([list],index=[list])

import pandas as pd
index = ['a','b','c','f','e'] 

s=pd.Series([1,2,3,4,5],index)
print(s)

a    1
b    2
c    3
f    4
e    5
dtype: int64

======================================================================= 

6.ARIMA建模的步骤

  • 观察数据是否是时间序列数据,是否有seasonal等因素。
  • transform:Box-correlation,保证variance是uniform的。如果用box-cor还不能稳定,还要继续深入挖掘。
  • ACF/PACF 是为了找到 MA 和 AR 的order。
  • d=0-stationarity,1,2-non stationarity
  • 白噪音check:确定这个模型是optimize的,mean=0,平方差=1.
  • 误差是白噪音的时候,model就ok了,就可以预测了

======================================================================= 

7.python 中with 用法

在Python中,如果一个对象有__enter__和__exit__方法,就可以在with语句中使用它。

with块结束时会调用相应的__exit__中的代码.因此,我们不需要再写相应的代码去close,无论是因为什么原因结束with.

with open(...) as f:
    print(f.readall())

等价于 ||

f = open(...)
print(f.readal())
f.close()

  如果不使用with,考虑到f2可能会打开失败或者后续的操作会出错,我们可以需要这样去写:

f1 = open(...)
try:
    f2 = open(...)
    ...
catch:
    pass
else:
    f2.close()
f1.close()

这样写出来太不优雅了,你得自己去捕获异常,手动关闭流、session等这些资源。

同时,我们还可以在一个with 语句中包括多个对象:

with open(...) as f1, open(...) as f2:
    ...

python语法基础_第5张图片

8.Python包中__init__.py作用

 总结:

__init__.py的主要作用是:

1. Python中package的标识,不能删除

2. 定义__all__用来模糊导入

3. 编写Python代码(不建议在__init__中写python模块,可以在包中在创建另外的模块来写,尽量保证__init__.py简单)

python语法基础_第6张图片

python模块中__init__.py的作用_yucicheung的博客-CSDN博客

Python包中__init__.py作用 - Alvin_Xu - 博客园

9.Pandas中loc和iloc函数用法详解

loc函数:通过行索引 “Index” 中的具体值来取行数据(如取"Index"为"A"的行)

iloc函数:通过行号来取行数据(如取第二行的数据)

df.iloc["1", :] : 第一行的所有数据

df.loc['a']  :取索引为'a'的行

10.gensim corpora 和 dictionary 使用

from gensim import corpora

from collections import defaultdict

import jieba
from gensim.corpora import Dictionary
wordslist = ["我在玉龙雪山","我喜欢玉龙雪山","我还要去玉龙雪山"]

# 切词
textTest = [[word for word in jieba.cut(words)] for words in wordslist]

# 生成字典
dictionary = Dictionary(textTest,prune_at=2000000)

for key in dictionary.iterkeys():
    print (key,dictionary.get(key),dictionary.dfs[key])
    
dictionary.filter_extremes(no_below=5, no_above=0.5, keep_n=1000) 

for key in dictionary.iterkeys():
    print (key,dictionary.get(key),dictionary.dfs[key])

python语法基础_第7张图片

关键API讲解

dictionary.filter_n_most_frequent(N) 
过滤掉出现频率最高的N个单词

dictionary.filter_extremes(no_below=5, no_above=0.5, keep_n=100000) 
1.去掉出现次数低于no_below的 
2.去掉出现次数高于no_above的。注意这个小数指的是百分数 
3.在1和2的基础上,保留出现频率前keep_n的单词

dictionary.filter_tokens(bad_ids=None, good_ids=None) 
有两种用法,一种是去掉bad_id对应的词,另一种是保留good_id对应的词而去掉其他词。注意这里bad_ids和good_ids都是列表形式

dictionary.compacity() 
在执行完前面的过滤操作以后,可能会造成单词的序号之间有空隙,这时就可以使用该函数来对词典来进行重新排序,去掉这些空隙。

corpora.Dictionary 对象
可以理解为python中的字典对象, 其Key是字典中的词,其Val是词对应的唯一数值型ID
构造方法  Dictionary(documents=None, prune_at=2000000)

prune_at参数    起到控制向量的维数的作用

gensim corpora 和 dictionary 使用 (一)__yuki_的博客-CSDN博客_corpora函数

gensim的corpora.Dictionary_上进的菜鸟的博客-CSDN博客_gensim.corpora.dictionary

Gensim学习笔记-1--理解corpora.Dictionary_Mr_Hagrid的博客-CSDN博客_corpora.dictionary

http://www.voidcn.com/article/p-mjlmvwmn-pq.html

11.python计算两个向量的余弦相似度

vector_a = np.mat(emb)
vector_b = np.mat(tp_emb)
num = float(vector_a * vector_b.T)
denom = np.linalg.norm(vector_a) * np.linalg.norm(vector_b)
cos = num / denom
sim = 0.5 + 0.5 * cos
#方法一:
import numpy as np


def cos_sim(vector_a, vector_b):
    """
    计算两个向量之间的余弦相似度
    :param vector_a: 向量 a 
    :param vector_b: 向量 b
    :return: sim
    """
    vector_a = np.mat(vector_a)
    vector_b = np.mat(vector_b)
    num = float(vector_a * vector_b.T)
    denom = np.linalg.norm(vector_a) * np.linalg.norm(vector_b)
    cos = num / denom
    sim = 0.5 + 0.5 * cos
    return sim
#方法二:
def cosine_similarity(x, y, norm=False):
    """ 计算两个向量x和y的余弦相似度 """
    # method 1
    res = np.array([[x[i] * y[i], x[i] * x[i], y[i] * y[i]] for i in range(len(x))])
    cos = sum(res[:, 0]) / (np.sqrt(sum(res[:, 1])) * np.sqrt(sum(res[:, 2])))
    return 0.5 * cos + 0.5 if norm else cos  # 归一化到[0, 1]区间内

https://www.jianshu.com/p/0c33c17770a0

python实现余弦近似度_昕玫的博客-CSDN博客

12.LDA模型提取文档主题

鬼吹灯文本挖掘4:LDA模型提取文档主题 sklearn LatentDirichletAllocation和gensim LdaModel_zhuzuwei的博客-CSDN博客

你可能感兴趣的:(python,python,开发语言,tensorflow)