很多人学Python库并不吃力,但却用不好,要么速度慢,要么比不用还繁琐
下面说说我在工作中怎么用这些库的
1. Pandas:你以为你熟悉它
pandas是入门级库,但用得好的人极少。
大多数人把它当Excel用——选中、筛选、复制粘贴。
这就错了。
pandas真正的威力是构建可复用的数据管道。
def clean_sales_data(df):
return (
df
.dropna(subset=["price", "quantity"])
.assign(total=lambda x: x["price"] * x["quantity"])
.query("total > 0")
)
这不是清洗数据,这是标准化数据处理流程。
2. NumPy:跑得慢的元凶
你可能很少直接调用NumPy,但它几乎在所有库的幕后运行。
说实话:代码跑得慢,基本是因为没用数组思维。
❌ 低效写法:
totals = []
for i in range(len(prices)):
totals.append(prices[i] * quantities[i])
✅ 正确姿势:
import numpy as np
totals = np.array(prices) * np.array(quantities)
从循环到向量化,一行之差,速度提升几百倍。
在自动化场景里,这就是"能用"和"被弃用"的区别。
3. Matplotlib/Seaborn:不是用来画图的
什么?可视化库不是用来画图的吗?
对,但不全对。
我用它们来及早发现数据问题。
拿到数据集,先画个直方图:
import matplotlib.pyplot as plt
plt.hist(df["salary"], bins=30)
plt.title("Salary Distribution")
plt.show()
因为异常值不会自己跳出来,它们会悄悄搞垮你的模型。
Seaborn更直观:
import seaborn as sns
sns.boxplot(x=df["salary"])
5秒钟发现可能要花几小时排查的问题。
4. Scikit-learn:不止是机器学习
scikit-learn = 机器学习?
这个等式害了很多人。
它其实是最好的数据处理工具包之一。
缩放数据:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaled = scaler.fit_transform(df[["age", "income"]])
但真正的用法是链式转换:
from sklearn.pipeline import Pipeline
pipeline = Pipeline([
("scale", StandardScaler()),
("model", SomeModel())
])
这时候你不是在跑模型,而是在建系统。
5. Requests:真实数据的入口
你的数据如果只来自CSV文件,那你在学校,不在公司。
真实数据在API里。
import requests
response = requests.get("https://api.example.com/data")
data = response.json()
就这些。但加上自动化,你可以:
- • 每天拉取实时数据
- • 自动更新仪表盘
- • 异常出现时触发告警
这才是数据科学从学术走向实用的转折点。
6. OpenPyXL:和Excel和平共处
你可能讨厌Excel。
但你的同事不讨厌。
与其对抗,不如用Python自动化Excel:
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws["A1"] = "Report Generated"
ws["A2"] = "Revenue"
wb.save("report.xlsx")
想象一下:
- • 管道自动运行
- • 数据自动处理
- • Excel报告自动生成
- • 邮件自动发送
7. Schedule/Airflow:自动化的最后一环
没人告诉初学者的是:
代码不能自动跑,就不能扩展。
简单场景:
import schedule
import time
def job():
print("Running data pipeline...")
schedule.every().day.at("09:00").do(job)
while True:
schedule.run_pending()
time.sleep(1)
复杂系统 → 上Airflow。
真正的软件工程,不在于模型多高大上,而在于管道稳不稳,能不能睡觉不操心。
不需要50个库。
把7个用透,够你横着走了。
业余选手写能跑的代码。职业人士写能持续运行的代码。