文件和数据格式化,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
file.close()
# ---CMD--- #
$ python word4.py
为什么学习 JavaScript?

JavaScript 是 web 开发人员必须学习的 3 门语言中的一门:

HTML 定义了网页的内容
CSS 描述了网页的布局
JavaScript 控制了网页的行为

本教程是关于 JavaScript 及介绍 JavaScript 如何与 HTML 和 CSS 一起工作。

谁适合阅读本教程?

1. 如果您想学习 JavaScript,您可以学习本教程:

了解 JavaScript 是如何与 HTML 和 CSS 一起工作的。

2. 如果在此之前您已经使用过 JavaScript,您也可以阅读本教程:

JavaScript 一直在升级,所以我们需要时刻了解 JavaScript 的新技术。


# ---end--- #

建议:

如果想方便点,可以换成下面这种会自动关闭文件的写法
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])
# 读取出来的值为:2


# 使用NUMPY模块处理一/二维数组
print(np.sum(a)) # 数组中所有元素的和
print(np.mean(a)) # 数组中所有元素的平均值
print(np.max(a)) # 数组中所有元素的最大值
print(np.min(a)) # 数组中所有元素的最小值

采用CSV格式对一二维数据文件的读写

处理一维数组

import csv

# 写入CSV文件
with open('data.csv', mode='w', newline='') as file:
writer = csv.writer(file)
data = ['apple', 'banana', 'orange']
writer.writerow(data)

# 读取CSV文件
with open('data.csv', mode='r') as file:
reader = csv.reader(file)
for row in reader:
print(row)

处理二维数组

import csv

# 写入CSV文件
with open('data.csv', mode='w', newline='') as file:
writer = csv.writer(file)
data = [['apple', 3], ['banana', 2], ['orange', 1]]
writer.writerows(data)

# 读取CSV文件
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")

c6

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

# 创建WordCloud对象
wc = wordcloud.WordCloud()

# 生成词云图
text = 'Python is a popular programming language.'
wc.generate(text)

# 显示词云图
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()

c5

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

讲真的,要是真的库库精通,那我不就成了库老了么😏……