Python常用的10个脚本
目录
一、文件读写
二、命令行参数处理
三、发送 HTTP 请求
四、数据处理
4.1 NumPy:
4.2 Pandas
4.3 Matplotlib
4.4 Seaborn
4.5 Scikit-learn
4.6 SciPy
五、定时任务
六、图像处理
七、邮件发送
八、数据库操作
九、日志记录
十、数据可视化
一、文件读写
Python中的文件读写操作主要依靠内置的open
函数来完成。
读取文件:
file = open('filename', 'r') # 打开文件,使用r模式(只读模式)
content = file.read() # 读取文件内容
file.close() # 关闭文件
print(content)
写入文件:
file = open('filename', 'w') # 打开文件,使用w模式(写入模式)
file.write('Hello, World!') # 写入内容
file.close() # 关闭文件
在open
函数中,第一个参数是文件路径,第二个参数是打开文件的模式。常见的模式有:
r
:只读模式
w
:写入模式(会先清空文件内容)
a
:追加模式(在文件末尾追加写入)
x
:创建模式(如果文件已存在,则会抛出异常)
t
:文本模式,默认模式
b
:二进制模式
在使用open
函数打开文件后,可以使用read
方法读取文件的内容,该方法返回一个字符串。读取完毕后,需要使用close
方法关闭文件。
写入文件时,可以使用write
方法将内容写入文件。写入完毕后,同样需要使用close
方法关闭文件。
除了用write
方法写入字符串外,还可以通过writelines
方法一次写入多行内容,例如:
file = open('filename', 'w')
lines = ['Line 1\n', 'Line 2\n', 'Line 3\n']
file.writelines(lines)
file.close()
同时也可以使用with
语句来自动关闭文件,例如:
with open('filename', 'r') as file:
content = file.read()
print(content)
以上就是Python文件读写的基本用法。在实际的应用中,还可以根据需要进行相应的文件操作,如复制文件、移动文件、删除文件等。
二、命令行参数处理
在Python中,可以使用sys.argv
来获取命令行参数。sys.argv
是一个包含命令行参数的列表,其中的第一个元素是脚本的名称,后续元素是传递给脚本的参数。
下面是一个简单的例子,展示如何处理命令行参数:
import sys
# 获取命令行参数
args = sys.argv
# 打印脚本名称
print("脚本名称:", args[0])
# 打印参数列表
print("参数列表:", args[1:])
假设你的脚本文件名为script.py
,你可以在命令行中使用以下方式来运行脚本并传递参数:
python script.py arg1 arg2 arg3
输出将会是:
脚本名称: script.py
参数列表: ['arg1', 'arg2', 'arg3']
你可以根据需要使用args[1:]
来对参数列表进行进一步的处理。
三、发送 HTTP 请求
Python可以使用内置的http.client库来发送HTTP请求。下面是一个简单的例子:
import http.client
# 创建HTTP连接
conn = http.client.HTTPConnection("example.com")
# 发送GET请求
conn.request("GET", "/")
# 获取响应
response = conn.getresponse()
print(response.status, response.reason)
# 读取响应内容
data = response.read()
print(data)
# 关闭连接
conn.close()
这个例子中,我们通过创建HTTPConnection对象来建立与服务器的连接。然后使用request方法发送GET请求,并使用getresponse方法获取响应。最后可以通过read方法读取响应内容。
除了http.client库,Python还提供了其他第三方库,如requests库、urllib库等,可以更方便地发送HTTP请求。
四、数据处理
Python是一种非常强大的编程语言,它具有丰富的数据处理能力。以下是一些常用的Python数据处理库和方法:
4.1 NumPy:
NumPy是Python科学计算的基础库,提供了高性能的多维数组对象和各种计算函数,可以轻松处理大规模的数值数据,下面是一些使用NumPy处理数据的常见操作:
1. 创建数组:可以使用NumPy的`array()`函数创建一个数组。例如,`arr = np.array([1, 2, 3, 4, 5])`创建一个包含1到5的一维数组。
2. 数组运算:NumPy支持对数组进行各种数学运算,如加法、减法、乘法和除法。例如,可以使用`arr + 2`对数组中的每个元素加2。
3. 数组切片:可以使用切片操作访问数组的部分元素。例如,`arr[1:3]`将返回数组中索引为1和2的元素。
4. 数组形状:可以使用`arr.shape`属性查看数组的形状。例如,对于一个二维数组,可以使用`arr.shape`返回它的行数和列数。
5. 数组聚合:可以使用聚合函数对数组中的元素进行统计。例如,`np.mean(arr)`计算数组的平均值,`np.max(arr)`计算数组的最大值。
6. 数组操作:NumPy提供了一系列函数用于数组的操作,例如转置数组、改变数组的形状、合并数组等。
7. 数组索引:可以使用索引操作访问数组中的特定元素。例如,`arr[0]`将返回数组中的第一个元素。
总结起来,NumPy提供了许多用于处理和操作数组的函数和方法,使得数据处理更加高效和方便。
4.2 Pandas
Pandas是一个灵活和高效的数据分析工具,提供了数据结构(如Series和DataFrame)和数据操作功能,可以进行数据的清洗、整理、聚合、转换等操作,下面是一些常用的Pandas数据处理操作:
导入Pandas库:首先需要导入Pandas库,通常使用以下语句:
import pandas as pd
创建数据结构:Pandas主要有两种数据结构,Series和DataFrame。Series是一维数据结构,类似于一维数组;DataFrame是二维数据结构,类似于表格。可以使用以下语句创建这两种数据结构:
series = pd.Series(data, index=index)
dataframe = pd.DataFrame(data, columns=columns)
读取数据:Pandas可以从多种数据源读取数据,例如CSV文件、Excel文件、数据库等。常用的读取数据的函数有read_csv()
、read_excel()
和read_sql()
等。
数据选择和过滤:Pandas提供了多种方法来选择和过滤数据,例如使用标签或位置进行选择,使用条件进行过滤等。常用的方法有loc[]
、iloc[]
和布尔索引等。
数据清洗:数据清洗是数据处理的重要步骤之一。在Pandas中,可以使用各种方法来处理缺失值、重复值、异常值等。常用的方法有dropna()
、fillna()
、drop_duplicates()
和replace()
等。
数据转换:Pandas提供了多种方法来进行数据转换,例如重塑数据表、合并数据表、排序等。常用的方法有pivot()
、melt()
、merge()
和sort_values()
等。
数据统计和分组:Pandas提供了丰富的统计和分组函数,可以对数据进行各种统计计算,例如均值、总和、分组统计等。常用的方法有mean()
、sum()
、groupby()
和agg()
等。
数据可视化:Pandas可以与Matplotlib等可视化库结合使用,可以将数据以图表的形式展示出来。常用的可视化方法有plot()
、scatter()
和hist()
等。
以上是Pandas的一些常用数据处理操作,通过灵活使用这些方法,可以轻松地对数据进行清洗、转换和分析。
4.3 Matplotlib
Matplotlib是一个数据可视化库,可以用于绘制各种类型的图表,如折线图、散点图、柱状图等,方便展示数据分布和趋势。
在数据处理中,Matplotlib常常与NumPy、Pandas等库一起使用。下面是一些常见的数据处理操作示例:
1.绘制折线图
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('折线图')
plt.show()
2.绘制散点图
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.scatter(x, y)
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('散点图')
plt.show()
3.绘制直方图
import matplotlib.pyplot as plt
data = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
plt.hist(data)
plt.xlabel('数据')
plt.ylabel('频次')
plt.title('直方图')
plt.show()
4.绘制柱状图
import matplotlib.pyplot as plt
labels = ['A', 'B', 'C', 'D']
values = [10, 20, 30, 40]
plt.bar(labels, values)
plt.xlabel('类别')
plt.ylabel('数值')
plt.title('柱状图')
plt.show()
5.绘制饼图
import matplotlib.pyplot as plt
labels = ['A', 'B', 'C', 'D']
values = [10, 20, 30, 40]
plt.pie(values, labels=labels)
plt.title('饼图')
plt.show()
这些只是Matplotlib的一小部分功能,还有更多的操作可以进行,如设置图形大小、调整坐标轴范围、添加图例等。详细的使用方法可以参考Matplotlib的官方文档。
4.4 Seaborn
Seaborn是基于Matplotlib的数据可视化库,建立在Matplotlib之上,提供了更高级的绘图功能和更美观的样式。虽然Seaborn主要用于绘制统计图表,但它也包含了一些数据处理的功能。 下面是一些Seaborn中常用的数据处理方法:
1.数据提取和筛选:Seaborn可以通过load_dataset()
函数导入自带的数据集,例如titanic
、iris
等。你可以使用Pandas的筛选方法来提取数据集中的特定列或行。
import seaborn as sns
# 导入自带的titanic数据集
titanic = sns.load_dataset('titanic')
# 提取特定列
age = titanic['age']
# 筛选特定行
survived = titanic[titanic['survived'] == 1]
2.缺失值处理:Seaborn中可以使用heatmap()
函数绘制缺失值热图,可视化数据中缺失值的分布情况。你可以使用Pandas的isnull()
函数找到缺失值,并使用dropna()
函数删除包含缺失值的行或列。
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# 生成包含缺失值的数据
data = pd.DataFrame({'A': [1, 2, np.nan, 4],
'B': [5, np.nan, 7, 8],
'C': [9, 10, 11, np.nan]})
# 绘制缺失值热图
sns.heatmap(data.isnull(), cmap='viridis')
plt.show()
# 删除包含缺失值的行或列
data_cleaned = data.dropna() # 删除包含缺失值的行
3.数据转换:Seaborn提供了一些数据转换函数,如boxcox()
可以对数据进行Box-Cox变换,logistic()
可以对数据进行logistic变换。
import seaborn as sns
import numpy as np
# 生成正态分布的数据
data = np.random.normal(0, 1, 100)
# 对数据进行Box-Cox变换
data_boxcox = sns.boxcox(data)
# 对数据进行logistic变换
data_logistic = sns.logistic(data)
这些只是Seaborn中一些常见的数据处理方法,更多功能可以查看Seaborn的官方文档。
4.5 Scikit-learn
Scikit-learn是一个机器学习库,提供了各种常用的机器学习算法和工具,可以用于数据预处理、特征选择、模型训练和评估,下面是一些常用的数据处理技巧。
1.数据导入: 使用pandas库可以轻松导入各种数据格式,如CSV、Excel、SQL数据库等。
import pandas as pd
# 导入CSV文件
data = pd.read_csv('data.csv')
# 导入Excel文件
data = pd.read_excel('data.xlsx')
# 导入SQL数据库
import sqlite3
conn = sqlite3.connect('database.db')
query = "SELECT * FROM table_name"
data = pd.read_sql(query, conn)
2.缺失值处理: 使用sklearn库中的Imputer类可以处理缺失值。可以使用平均值、中位数或众数来填充缺失值。
from sklearn.impute import SimpleImputer
# 创建一个Imputer对象并设置参数
imputer = SimpleImputer(strategy='mean')
# 将Imputer对象应用于数据
imputed_data = imputer.fit_transform(data)
3.数据标准化: 使用sklearn库中的StandardScaler类可以对数据进行标准化处理,使其服从标准正态分布。
from sklearn.preprocessing import StandardScaler
# 创建一个StandardScaler对象并拟合数据
scaler = StandardScaler().fit(data)
# 使用StandardScaler对象对数据进行转换
scaled_data = scaler.transform(data)
4.数据编码: 使用sklearn库中的LabelEncoder和OneHotEncoder类可以对分类变量进行编码。
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
# 创建一个LabelEncoder对象并拟合数据
encoder = LabelEncoder().fit(data)
# 使用LabelEncoder对象对数据进行转换
encoded_data = encoder.transform(data)
# 创建一个OneHotEncoder对象并拟合数据
encoder = OneHotEncoder().fit(encoded_data)
# 使用OneHotEncoder对象对数据进行转换
encoded_data = encoder.transform(encoded_data)
以上是一些常用的数据处理技巧,仅供参考。Scikit-learn提供了更多功能强大的工具,可以根据具体需求来选择使用。
4.6 SciPy
SciPy是一个科学计算库,提供了许多数学、科学和工程计算的功能,包括数值积分、优化、信号处理等,下面是一些常见的数据处理任务,可以使用SciPy来完成:
读取和写入数据:SciPy包含了一些用于读取和写入常见文件格式的函数,例如文本文件、CSV文件、MATLAB文件等。可以使用numpy
库读取和写入NumPy数组。
数据清洗和预处理:SciPy提供了一些函数用于数据清洗和预处理,例如去除缺失值、异常值,数据标准化等。
描述统计和数据可视化:SciPy提供了许多用于描述统计和数据可视化的函数,例如计算平均值、方差,绘制直方图、散点图等。
数据平滑和插值:SciPy提供了一些函数用于数据平滑和插值,例如多项式拟合、样条插值等。
数据分析和建模:SciPy提供了一些用于数据分析和建模的函数,例如回归分析、聚类分析、主成分分析等。
时间序列分析:SciPy提供了一些用于时间序列分析的函数,例如自相关函数、谱密度估计等。
优化和求解方程:SciPy提供了一些用于优化和求解方程的函数,例如最小化函数、求解非线性方程等。
以上只是SciPy提供的一些常见数据处理功能的示例,如果有具体的问题或需求,可以查阅SciPy的官方文档或在社区中寻求帮助。
除了以上这些库外,还有许多其他的数据处理库和方法可以根据具体的数据处理需求进行选择和使用。Python在数据处理方面具有丰富的生态系统,可以满足不同场景下的数据处理需求。
五、定时任务
在Python中,可以使用schedule
库来实现定时任务的功能。下面是一个使用schedule
库实现定时任务的示例:
import schedule
import time
def job():
print("定时任务执行")
schedule.every(10).seconds.do(job) # 每10秒执行一次定时任务
schedule.every().day.at("10:30").do(job) # 每天的10:30执行定时任务
schedule.every().monday.do(job) # 每周一执行定时任务
while True:
schedule.run_pending()
time.sleep(1)
在上面的示例中,我们定义了一个job
函数,这个函数就是我们要定时执行的任务。使用schedule.every
方法来指定任务的执行时间,可以选择每隔多少秒执行一次,或者在每天的固定时间执行,或者在每周的固定时间执行。
然后,我们在一个无限循环中使用schedule.run_pending()
方法来运行定时任务。schedule.run_pending()
会检查是否有定时任务需要执行,如果有则执行,否则继续等待。
需要注意的是,如果要让定时任务一直运行,需要在循环中添加适当的延时,以免过于频繁地执行任务。在上面的示例中,我们使用了time.sleep(1)
来让循环每秒执行一次,避免过度消耗系统资源。
六、图像处理
Python是一种通用的编程语言,也可以用于图像处理。Python提供了一些强大的图像处理库,如PIL(Python Imaging Library)和OpenCV(Open Source Computer Vision Library)。这些库可以帮助你读取、修改和保存图像,以及进行各种图像处理操作,如调整亮度、对比度、色彩和大小,滤波,图像增强和特征提取等。
下面是一个简单的示例代码,演示了使用PIL库加载并缩放图像的过程:
from PIL import Image
# 加载图像
image = Image.open("image.jpg")
# 缩放图像
resized_image = image.resize((500, 500))
# 保存图像
resized_image.save("resized_image.jpg")
通过这个示例,你可以学会如何使用Python来处理图像。你也可以进一步了解PIL和OpenCV等图像处理库的更多功能和应用。
七、邮件发送
你想要使用Python发送邮件吗?是的话,可以使用Python内置的smtplib
库来发送邮件。以下是一个简单的示例代码:
import smtplib
from email.mime.text import MIMEText
def send_email(sender, recipient, subject, message):
# 邮件内容
msg = MIMEText(message)
msg['Subject'] = subject
msg['From'] = sender
msg['To'] = recipient
# 发送邮件
try:
smtp_obj = smtplib.SMTP('your_smtp_server', 587)
smtp_obj.starttls()
smtp_obj.login('your_email_username', 'your_email_password')
smtp_obj.sendmail(sender, recipient, msg.as_string())
smtp_obj.quit()
print("邮件发送成功")
except Exception as e:
print("邮件发送失败:", str(e))
# 使用示例
send_email('sender@example.com', 'recipient@example.com', 'Test Subject', 'This is a test email.')
在代码中,你需要替换以下内容:
your_smtp_server
:SMTP服务器地址。
your_email_username
:你的邮箱用户名。
your_email_password
:你的邮箱密码。
sender@example.com
:发件人邮箱地址。
recipient@example.com
:收件人邮箱地址。
Test Subject
:邮件主题。
This is a test email.
:邮件内容。
另外,请确保你的邮箱设置允许通过SMTP发送邮件。
八、数据库操作
在Python中,可以使用多种数据库操作库来进行数据库操作,如MySQLdb
、psycopg2
、sqlite3
等。以下是使用sqlite3
库进行数据库操作的示例:
1 .连接数据库:
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')
2.创建表:
# 创建表
conn.execute('''CREATE TABLE COMPANY
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL);''')
3.插入数据:
# 插入数据
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (1, 'Paul', 32, 'California', 20000.00 )")
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (2, 'Allen', 25, 'Texas', 15000.00 )")
4.查询数据:
# 查询数据
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
print("ID = ", row[0])
print("NAME = ", row[1])
print("ADDRESS = ", row[2])
print("SALARY = ", row[3])
5.更新数据:
# 更新数据
conn.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")
6.删除数据:
# 删除数据
conn.execute("DELETE from COMPANY where ID = 2")
7.提交更改并关闭连接:
# 提交更改并关闭连接
conn.commit()
conn.close()
以上是使用sqlite3
库进行数据库操作的基本示例,其他数据库操作库和操作类似,只是连接数据库的方式和具体操作语句可能会有所不同
九、日志记录
Python中的日志记录使用logging
模块来实现。该模块提供了灵活的日志记录功能,可以满足不同场景下的需求。
下面是一个简单的例子,演示如何在Python中记录日志:
import logging
# 配置日志记录
logging.basicConfig(level=logging.INFO, # 设置日志级别为INFO
filename='app.log', # 指定日志输出文件
filemode='w', # 指定文件写入模式
format='%(asctime)s - %(levelname)s - %(message)s') # 指定日志格式
# 记录日志
logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')
以上代码中,首先使用basicConfig()
方法配置了日志的级别、输出文件、文件写入模式和格式。然后使用logging.debug()
、logging.info()
、logging.warning()
、logging.error()
和logging.critical()
方法记录不同级别的日志消息。
执行以上代码后,程序会将日志消息记录到app.log
文件中。文件内容如下:
2022-07-01 10:00:00,000 - INFO - This is an info message
2022-07-01 10:00:00,000 - WARNING - This is a warning message
2022-07-01 10:00:00,000 - ERROR - This is an error message
2022-07-01 10:00:00,000 - CRITICAL - This is a critical message
除了上述示例中的基本用法外,logging
模块还提供了其他功能,比如添加日志处理器、设置日志过滤器、编写自定义日志处理器等。你可以根据具体需求进一步了解和使用。
十、数据可视化
Python有许多强大的数据可视化工具,其中最流行的包括Matplotlib、Seaborn和Plotly。在下面的例子中,我们将使用Matplotlib和Seaborn展示几种常见的数据可视化方法。
1.折线图(Line plot)
import matplotlib.pyplot as plt
# 数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 绘制折线图
plt.plot(x, y)
# 添加标题和坐标轴标签
plt.title("Line Plot")
plt.xlabel("X")
plt.ylabel("Y")
# 显示图形
plt.show()
2.柱状图(Bar plot)
import matplotlib.pyplot as plt
# 数据
categories = ['A', 'B', 'C', 'D']
values = [3, 6, 5, 8]
# 绘制柱状图
plt.bar(categories, values)
# 添加标题和坐标轴标签
plt.title("Bar Plot")
plt.xlabel("Category")
plt.ylabel("Value")
# 显示图形
plt.show()
3.散点图(Scatter plot)
import matplotlib.pyplot as plt
# 数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 绘制散点图
plt.scatter(x, y)
# 添加标题和坐标轴标签
plt.title("Scatter Plot")
plt.xlabel("X")
plt.ylabel("Y")
# 显示图形
plt.show()
4.箱线图(Box plot)
import seaborn as sns
# 数据
data = [1, 2, 3, 4, 5]
# 绘制箱线图
sns.boxplot(data)
# 添加标题和坐标轴标签
plt.title("Box Plot")
plt.xlabel("Data")
# 显示图形
plt.show()
这些只是数据可视化的一小部分方法,Python还有很多其他的功能强大的数据可视化工具和方法。希望对你有所帮助!
作者:骑上单车去旅行