深浅拷贝
1 2 3 4 5 6
| import copy a = [1,2,[3,4]] b = copy.copy(a) c = copy.deepcopy(a) a[0]=11 a[2][0]=33
|
new与init
1 2 3 4 5 6 7 8 9
| class person: def __new__(cls,*args,**kwargs): print("调用 __new__,创建对象") return super().__new__(cls)
def __init__(self,name): print("调用 __init__,初始化属性") self.name = name p=person("张三")
|
new()方法创建对象
- 负责真正创建实例对象
- 在内存中开辟空间
- 返回创建好的对象
init()方法初始化对象
- 对象已经存在之后才调用
- 负责给对象赋值、初始化属性
- 没有返回值
pandas
pandas 是 Python 里专门处理表格数据的库,相当于代码版的 Excel,用来读表、改表、筛选、统计、画图等操作。
前置知识
Series 是 pandas 最基本的数据结构,相当于 Excel 中的一列数据。
- 定义:一维数组,每个元素都有一个对应的索引
- 可以是数值、文本、日期等任意类型
- 可以进行数学运算、统计分析、可视化等操作
1 2 3
| import pandas as pd s = pd.Series([1,2,3,4,5],index=['a','b','c','d','e']) print(s)
|
DataFrame 是 pandas 最基本的数据结构,相当于 Excel 中的一张表格。
- 定义:二维数组,每个元素都有一个对应的索引
- 可以是数值、文本、日期等任意类型
- 可以进行数学运算、统计分析、可视化等操作
1 2 3 4 5 6 7
| import pandas as pd df = pd.DataFrame({ '姓名': ['小明', '小红', '小刚'], '年龄': [18, 19, 20], '成绩': [90, 85, 88] }) print(df)
|
所有操作串在一起的完整案例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| import pandas as pd
data = { "姓名": ["小明", "小红", "小刚", "小丽", "小强"], "年龄": [18, 19, None, 20, 18], "成绩": [85, 92, 78, None, 90], "性别": ["男", "女", "男", "女", "男"] } df = pd.DataFrame(data)
print("===== 前3行 =====") print(df.head(3))
print("\n===== 数据信息 =====") df.info()
print("\n===== 统计信息 =====") print(df.describe())
print("\n===== 行列数 =====", df.shape) print("===== 列名 =====", df.columns.tolist())
print("\n===== 只看姓名和成绩 =====") print(df[["姓名", "成绩"]])
print("\n===== 前2行 =====") print(df.iloc[:2])
print("\n===== 年龄>18的人 =====") print(df[df["年龄"] > 18])
df["总分"] = df["成绩"] + 10 df["是否及格"] = df["成绩"] >= 60 print("\n===== 新增列后 =====") print(df)
df = df.drop("年龄", axis=1) print("\n===== 删除年龄列后 =====") print(df)
print("\n===== 空值数量 =====") print(df.isnull().sum())
df = df.fillna(0) print("\n===== 空值填充后 =====") print(df)
print("\n===== 按性别统计平均成绩 =====") print(df.groupby("性别")["成绩"].mean())
print("\n===== 按性别统计人数 =====") print(df.groupby("性别").size())
df_sorted = df.sort_values(by="成绩", ascending=False) print("\n===== 按成绩从高到低排序 =====") print(df_sorted)
df.to_excel("处理后结果.xlsx", index=False) df.to_csv("处理后结果.csv", index=False, encoding="utf-8")
|
If you like this article, please support me.