文件和数据格式化,Python程序的设计方法,Python计算生态。
文件和数据格式化
文件的使用:文件打开、读写和关闭。
打开和关闭文件
open():打开文件并返回文件对象 close():关闭文件
读取文件内容
read(size=-1):读取文件全部或指定大小的内容 readline(size=-1):读取一行或指定大小的内容 readlines(hint=-1):读取所有行或指定大小的内容,并返回一个列表
写入文件内容
write(str):向文件写入指定字符串 writelines(sequence):向文件写入一个序列的字符串
文件对象的属性和方法
closed:文件是否关闭的布尔值 mode:文件打开的模式 name:文件名 seek(offset[, whence]):移动文件读取指针到指定位置 tell():返回文件读取指针的当前位置 flush():将缓冲区的内容写入文件
|
open
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) file: 必需,文件路径(相对或者绝对路径)。 mode: 可选,文件打开模式 buffering: 设置缓冲 encoding: 一般使用utf8 errors: 报错级别 newline: 区分换行符 closefd: 传入的file参数类型
|
实例
file=open('word.txt','r+',encoding='UTF-8')
file.read()
file.close()
$ python word4.py 为什么学习 JavaScript?
JavaScript 是 web 开发人员必须学习的 3 门语言中的一门:
HTML 定义了网页的内容 CSS 描述了网页的布局 JavaScript 控制了网页的行为
本教程是关于 JavaScript 及介绍 JavaScript 如何与 HTML 和 CSS 一起工作。
谁适合阅读本教程?
1. 如果您想学习 JavaScript,您可以学习本教程:
了解 JavaScript 是如何与 HTML 和 CSS 一起工作的。
2. 如果在此之前您已经使用过 JavaScript,您也可以阅读本教程:
JavaScript 一直在升级,所以我们需要时刻了解 JavaScript 的新技术。
|
建议:
如果想方便点,可以换成下面这种会自动关闭文件的写法 with open('word.txt','r+',encoding="UTF-8") as file: a = file.read() print(a)
|
数据组织的维度:一维数据和二维数据
一维数组(数据)处理方式基本差不多,详情请参照上一篇博客。
一维数组 [1,2,3,4] 二维数组 [ [1,2,3,4], [5,6,7,8], [9,10,11,12] ] 要获取更高维度的数组,直接往上叠加就行。
|
二维数据的处理:表示、存储和处理
二维数组的处理: 基本和一维数组一样,但二维数组读取的时候可以进行维度读取。
arr = [ [1,2,3,4], [5,6,7,8], [9,10,11,12] ] print(arr[0][1])
print(np.sum(a)) print(np.mean(a)) print(np.max(a)) print(np.min(a))
|
采用CSV格式对一二维数据文件的读写
处理一维数组
import csv
with open('data.csv', mode='w', newline='') as file: writer = csv.writer(file) data = ['apple', 'banana', 'orange'] writer.writerow(data)
with open('data.csv', mode='r') as file: reader = csv.reader(file) for row in reader: print(row)
|
处理二维数组
import csv
with open('data.csv', mode='w', newline='') as file: writer = csv.writer(file) data = [['apple', 3], ['banana', 2], ['orange', 1]] writer.writerows(data)
with open('data.csv', mode='r') as file: reader = csv.reader(file) for row in reader: print(row)
|
Python程序设计方法
过程式编程方法
Python的过程式编程方法是一种结构化的编程范式,其中程序通过调用一系列的子程序(即过程或函数)来完成任务。过程式编程方法的实现方式是将程序分解为一系列的子程序,每个子程序都负责完成某个特定的任务,通过按照特定的顺序调用这些子程序来实现程序的功能。
函数式编程方法
函数式编程的主要思想是将计算过程看作是一系列函数的调用,这些函数对输入参数进行转换,生成新的输出,而不是通过一系列命令来改变一组数据的状态。
输入 =函数处理=> 输出
Python中支持函数式编程的特性有:
函数可以作为参数传递给其他函数。
函数可以作为返回值返回。
支持匿名函数(lambda表达式)。
支持map、filter、reduce等函数式编程的高阶函数。
支持列表推导式。
Python计算生态
生态式编程方法
Python的生态式编程方法是指利用现有的开源代码库,通过组合、修改、扩展已有的库来实现复杂的功能。这种编程方法强调重用和扩展现有的代码,减少重复造轮子,提高开发效率。
标准库的使用:turtle库、random库、time库
turtle库
turtle库是Python标准库之一,用于绘制图形和图像。它提供了一些函数和方法,用于控制海龟的移动和绘制形状、图案等。
常见的turtle库函数:
- turtle.forward(distance): 让海龟向前移动指定距离distance
- turtle.backward(distance):让海龟向后移动指定距离distance
- turtle.right(angle): 让海龟向右旋转指定角度angle
- turtle.left(angle): 让海龟向左旋转指定角度angle
- turtle.penup(): 将海龟的笔提起,不绘制图形
- turtle.pendown(): 将海龟的笔放下,开始绘制图形
- turtle.pensize(width): 设置海龟笔的宽度为width
- turtle.speed(speed): 设置海龟的速度,速度范围为0-10
- turtle.fillcolor(color): 设置海龟填充的颜色为color
- turtle.begin_fill(): 开始填充海龟的图形
- turtle.end_fill(): 结束填充海龟的图形
random库
random 是 Python 中的一个标准库,用于生成各种类型的随机数。它提供了多个函数和方法,以下是其中一些常见的:
- random():返回一个 [0, 1) 之间的随机小数。
- randint(a, b):返回一个 [a, b] 之间的整数。
- uniform(a, b):返回一个 [a, b] 之间的随机小数。
- choice(seq):从序列 seq 中随机选择一个元素。
- shuffle(seq):将序列 seq 中的元素随机排列。
- sample(seq, k):从序列 seq 中随机选择 k 个元素并返回一个新的列表。
time库
time库是Python中的标准库之一,用于处理时间和日期相关的操作。它提供了获取当前时间、时间格式化、休眠等常见的操作。
以下是time库常见的函数和方法:
- time(): 获取当前时间戳(自1970年1月1日以来的秒数)
- sleep(sec): 使程序暂停指定的秒数
- localtime(): 将当前时间戳转换为本地时间
- gmtime(): 将当前时间戳转换为UTC时间
- mktime(t): 将本地时间元组转换为时间戳
- strftime(format[, t]):将时间元组或时间戳格式化为指定的字符串格式
a = { 'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4', 'key5':'value5', 'key6':'value6', 'key7':'value7' } for i,j in a.items(): print(i,j)
|
利用pip工具的第三方库的获取和安装方法
查看已经安装的第三方库:pip list
直接安装库: pip install 库名
pip install为在线安装,离线安装可以使用wheel
指定源安装(防止国外源下载太慢)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple
指定版本安装: pip install robotframework==2.8.7
卸载已安装的库: pip uninstall requests
更新某个库: pip install -U requests
查看pip版本: pip –version
pip工具升级: python -m pip install –upgrade pip
第三方库的使用:jieba库、PyInstaller库、基本NumPy库、wordcould库
jieba库
jieba库是Python中一个用于中文分词的开源库,以下是jieba库中所有的函数及其概述:
jieba.cut: 将字符串进行分词,返回一个可迭代的generator; jieba.lcut: 将字符串进行分词,返回一个list; jieba.cut_for_search: 将字符串进行搜索引擎模式的分词,返回一个可迭代的generator; jieba.lcut_for_search: 将字符串进行搜索引擎模式的分词,返回一个list; jieba.add_word: 向分词词典中添加新词; jieba.del_word: 从分词词典中删除指定的词语; jieba.suggest_freq: 调整分词词典中某个单词的词频,使其能正确地被分出来; jieba.get_FREQ: 获取指定单词的词频; jieba.get_DAG: 获取分词过程中的有向无环图; jieba.tokenize: 对句子进行分词,返回一个可迭代的generator,每个元素为一个tuple,包含分词后的词语、起始位置和结束位置; jieba.enable_parallel: 启用并行分词模式; jieba.disable_parallel:关闭并行分词模式; jieba.enable_paddle: 启用飞桨深度学习分词; jieba.enable_hidden_markov:启用隐马尔可夫模型(HMM)分词; jieba.disable_hidden_markov:关闭隐马尔可夫模型(HMM)分词; jieba.enable_strip: 启用去除标点符号功能; jieba.disable_strip: 关闭去除标点符号功能; jieba.load_userdict: 加载用户自定义词典; jieba.analyse.extract_tags:提取关键词; jieba.analyse.textrank:关键词提取的TextRank算法实现; jieba.analyse.set_idf_path:设置IDF文件路径; jieba.analyse.set_stop_words:设置停用词文件路径; jieba.posseg.cut: 返回一个可迭代的generator,每个元素为一个pair,包含分词和词性。
|
实例
import jieba import matplotlib.font_manager as fm from wordcloud import WordCloud
font_path = 'C:/Windows/Fonts/Deng.ttf'
font = fm.FontProperties(fname=font_path)
text = "结构化数据,是指在计算机中存储和处理时,所采用的一种特殊的数据组织形式,其设计旨在使计算机可以方便地识别和处理数据中的各种关系。" words = " ".join(jieba.cut(text)) wordcloud = WordCloud(background_color="white", font_path=font_path, width=800, height=400).generate(words) wordcloud.to_file("wordcloud.png")
|

PyInstaller库(必选)
将脚本程序转变为可执行程序 (.exe) 。
安装PyInstaller库 pip install pyinstaller
打包成单个可执行文件 pyinstaller 你的程序.py
|
wordcould库
wordcloud是一个用于生成词云图的Python库,它可以根据一段文本的词频信息,生成相应的词云图。wordcloud库主要包含以下几个模块:
安装: pip install wordcloud
相关语法: WordCloud: 创建一个 WordCloud 对象,可以设置词云的参数。 STOPWORDS:停用词列表,用于过滤掉一些常用词语。 fit_words: 根据单词词频调整词云图中单词的大小。 get_single_color_func:用于生成单色词云图的函数。 generate: 从输入的文本中生成词云图。 generate_from_text: 从输入的文本中生成词云图。 generate_from_frequencies: 根据单词词频生成词云图。 ImageColorGenerator:图像颜色生成器,用于生成基于图片颜色的词云图。 layout_: 获取生成的词云图的排版信息。 process_text: 将输入的文本进行分词和过滤,返回单词列表。 recolor: 对词云图进行颜色重构。 random_color_func:用于生成多色词云图的函数。 to_file: 保存词云图为图片文件。
|
实例
import wordcloud import matplotlib.pyplot as plt
wc = wordcloud.WordCloud()
text = 'Python is a popular programming language.' wc.generate(text)
plt.imshow(wc, interpolation='bilinear') plt.axis('off') plt.show()
|

Numpy库
Numpy是一个Python科学计算库,它包含了大量用于处理数组的函数和工具。以下是Numpy库的常用函数概述(不完全列表):
数组创建和操作函数: np.array():创建一个数组。 np.zeros():创建一个全部为0的数组。 np.ones():创建一个全部为1的数组。 np.empty():创建一个空的数组。 np.arange():创建一个一维数组,元素为指定的范围。 np.linspace():创建一个一维数组,元素为指定的范围,并且数量相等。
数组形状和操作函数: np.reshape():更改数组的形状。 np.resize():更改数组的大小。 np.transpose():转置数组。 np.ravel():将数组展平为一维数组。 np.flatten():将数组展平为一维数组,并返回一个副本。 np.concatenate():沿着指定轴将多个数组合并成一个数组。
数组运算和操作函数: np.add():两个数组相加。 np.subtract():两个数组相减。 np.multiply():两个数组相乘。 np.divide():两个数组相除。 np.power():数组中每个元素的幂。 np.sqrt():数组中每个元素的平方根。 np.exp():数组中每个元素的指数。 np.dot():矩阵乘法。 np.sum():数组中元素的总和。 np.max():数组中的最大值。 np.min():数组中的最小值。 np.mean():数组中的平均值。 np.std():数组中的标准差。 np.var():数组中的方差。
索引和切片函数: np.argmax():数组中最大值的索引。 np.argmin():数组中最小值的索引。 np.where():返回符合条件的元素的索引。 np.take():从数组中获取指定位置的元素。 np.put():在数组中放置元素。 np.clip():将数组中的元素限制在某个范围内。
随机数函数: np.random.rand():生成随机数数组。 np.random.randn():生成标准正态分布的随机数数组。 np.random.randint():生成指定范围内的随机整数数组。 np.random.choice():从指定的一维数组中随机选择元素。 np.random.shuffle():随机打乱数组中元素的顺序。
文件操作函数: np.loadtxt():从文本文件中读取数据。 np.savetxt():将数组写入文本文件。 np.load():从二进制文件中加载数组。 np.save():将数组保存为二进制
|
或者下面这个
数组创建函数:
numpy.array(): 创建一个数组 numpy.arange(): 创建一个一维数组,根据起始值和步长生成一组数 numpy.linspace(): 创建一个一维数组,根据起始值、终止值和元素个数生成一组等差数列 numpy.zeros(): 创建一个指定形状全为0的数组 numpy.ones(): 创建一个指定形状全为1的数组 numpy.eye(): 创建一个指定形状的单位矩阵
数组操作函数:
numpy.reshape(): 将数组重塑为指定的形状 numpy.transpose(): 将数组转置 numpy.concatenate(): 沿指定轴拼接多个数组 numpy.split(): 沿指定轴分割一个数组 numpy.argmax(): 返回数组中指定轴的最大值的索引 numpy.argmin(): 返回数组中指定轴的最小值的索引 numpy.sort(): 对数组进行排序
数学函数:
numpy.sin(): 计算正弦函数 numpy.cos(): 计算余弦函数 numpy.tan(): 计算正切函数 numpy.exp(): 计算e的次方 numpy.log(): 计算自然对数 numpy.log10(): 计算以10为底的对数 numpy.sqrt(): 计算平方根 numpy.power(): 计算幂次方
线性代数函数:
numpy.dot(): 计算矩阵乘积 numpy.linalg.det(): 计算矩阵的行列式 numpy.linalg.inv(): 计算矩阵的逆矩阵
统计函数:
numpy.mean(): 计算数组的平均值 numpy.std(): 计算数组的标准差 numpy.var(): 计算数组的方差 numpy.median(): 计算数组的中位数 numpy.max(): 计算数组的最大值 numpy.min(): 计算数组的最小值
还有很多其他的函数,这里只列举了一部分。具体的函数可以查看NumPy的官方文档。
|
说实在,这个模块真的挺让人头大的……
更广泛的Python计算生态
更广泛的Python计算生态,只要求了解第三方库的名称,不限于以下领域:网络爬虫、数据分析、文本处理、数据可视化、用户图形界面、机器学习、Web开发、游戏开发等
深度学习:TensorFlow, PyTorch, Keras, MXNet, Caffe, Theano
自然语言处理:NLTK, Spacy, Gensim, TextBlob, Stanford CoreNLP
数据库操作:SQLAlchemy, Psycopg2, PyMySQL, PyMongo
数据可视化:Matplotlib, Seaborn, Plotly, Bokeh, Altair
Web开发:Django, Flask, Pyramid, Tornado, FastAPI, Bottle
网络爬虫:Scrapy, Beautiful Soup, Requests, Selenium, PySpider
游戏开发:Pygame, Panda3D, PyOpenGL, PyOgre, Cocos2D
用户图形界面:Tkinter, PyQt, PyGTK, wxPython, Kivy
数学计算:SymPy, SciPy, Statsmodels, Pandas, Dask
图像处理:OpenCV, Pillow, Scikit-image, SimpleCV, Mahotas
数据库连接:pymysql, psycopg2, sqlite3, mysql-connector-python, cx_Oracle
调试和测试:pytest, unittest, doctest, nose, coverage
机器学习:Scikit-learn, XGBoost, LightGBM, CatBoost, H2O
大数据处理:PySpark, Dask, Vaex, PyHive, PyBigQuery
讲真的,要是真的库库精通,那我不就成了库老了么😏……