文件和数据格式化,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
讲真的,要是真的库库精通,那我不就成了库老了么😏……