Python 核心代码总结

Python 核心代码总结

分模块语法
一、基础语法模块
变量与数据类型(字符串、整数、浮点数、布尔值)
输入输出(print 函数、input 函数、格式化输出)
流程控制(if 判断、for 循环、while 循环)
随机数生成(random 模块)
综合案例(猜数字游戏)
二、容器类型模块
五大容器基础(字符串、列表、元组、集合、字典)
可变与不可变类型区分
序列切片操作
各容器增删改查核心方法
三、函数模块
函数定义与调用
变量作用域(全局变量、局部变量)
参数传递(位置传参、关键字传参、可变参数)
匿名函数(lambda 函数)
文件操作(读取文件、写入与备份文件)
四、模块与包模块
模块导入(多种导入方式)
包的导入(包内模块调用)
第三方库安装与使用
五、面向对象模块
类与对象(定义、实例化、属性与方法调用)
构造方法与属性初始化
继承与方法重写
super 函数使用
实例方法、类方法、静态方法
多继承特性
六、数据分析基础模块
空值判断与识别(None、np.nan、pd.NA)
数据读取与缺失值查看
缺失值处理(删除、填充)
分组聚合操作(groupby、agg)
透视表使用(pivot_table)

一、基础语法与输入输出

1. 变量定义


name = "张三"       # 字符串
age = 18            # 整数
height = 1.75       # 浮点数
is_married = True   # 布尔值

2. print () 函数


print("hello")
print("hello", "world", sep="-", end="!")

3. input () 函数与数据转换


name = input("请输入姓名:")
num1 = int(input("请输入数字1:"))
num2 = int(input("请输入数字2:"))
sum = num1 + num2

4. 格式化输出


# 占位符
print("姓名:%s,年龄:%d,身高:%f" % ("张三", 18, 1.75))
# format方法
print("姓名:{},年龄:{},身高:{}".format("张三", 18, 1.75))
# f-string
print(f"姓名:{'张三'},年龄:{18},身高:{1.75}")

二、流程控制

1. if 判断


# 三目运算符
age = int(input("请输入年龄:"))
result = "成年" if age > 18 else "未成年"
print(result)

# 多分支
score = int(input("请输入成绩:"))
if score >= 90:
    print("成绩优秀")
elif score >= 70:
    print("成绩良好")
else:
    print("成绩一般")

2. for 循环


# 遍历字符串
for char in "云上程序员":
    print(char)

# 遍历列表
list1 = [1,2,3,4,5,6,7,8,9,10]
for num in list1:
    print(num)

# range函数
for num in range(1, 11):
    print(num)
for num in range(0, 11, 2):
    print(num)

3. while 循环


# 打印1-10
num = 1
while num <= 10:
    print(num)
    num += 1

# 跳过数字3
num = 0
while num <= 10:
    num += 1
    if num == 3:
        continue
    print(num)

# 打印到5停止
num = 0
while num <= 10:
    num += 1
    if num == 5:
        break
    print(num)

4. 猜数字游戏


import random
num = random.randint(1, 10)
while True:
    guess_num = int(input("请输入1-10之间的数字:"))
    if guess_num == num:
        print("恭喜你猜对了!")
        break
    elif guess_num > num:
        print("你猜的数字大了")
    else:
        print("你猜的数字小了")

三、容器类型操作

1. 字符串


# 索引与切片
name = "云上程序员"
print(name[0])      # 正向索引
print(name[-1])     # 反向索引
print(name[0:3])    # 切片

# 常用函数
print(len(name))                # 长度
print(name.count("教"))         # 计数
print("云上" in name)           # 包含判断
info_list = "张三,18,男".split(",")  # 分割
msg = "我叫张三".replace("张三", "***")  # 替换
print("abc".upper())            # 转大写
print("ABC".lower())            # 转小写

2. 列表


# 定义与操作
lists = [1,2,3,4]
lists.append(5)                  # 追加
lists.insert(1, 0)               # 插入
lists[3] = 10                    # 修改
print(lists[3])                  # 查询
lists.pop()                      # 删除最后一个元素
lists.pop(2)                     # 删除指定下标
lists.remove(0)                  # 删除指定元素
del lists[1]                     # 删除指定下标

# 其他方法
lists.sort()                     # 排序
lists.reverse()                  # 反转
print(len(lists))                # 长度
print(lists.count(1))            # 计数

3. 元组


# 定义与操作
t1 = ()
t3 = ("你好", 10, 3.14, True)
name_tuple = ("张三", "王五", "赵六", "孙七")
print(name_tuple[0])             # 索引
print(len(name_tuple))           # 长度
print(name_tuple.count("张三"))  # 计数
print(name_tuple.index("张三"))  # 查找索引

4. 集合


# 定义与操作
s1 = set()
s2 = {"你好", 10, 3.14, True}
num_list = [10,10,20,30,20]
num_set = set(num_list)          # 去重
num_list = list(num_set)         # 转回列表

# 集合操作
s1.add(10)
s1.add(10)                       # 自动去重
print(len(s2))
print("张三" in s2)

5. 字典


# 定义与操作
d1 = {}
d3 = {'name': '张三', 'age': 18, 'sex': '男'}
stu_score = {
    "张三": {"语文": 100, "数学": 100},
    "李四": {"语文": 90, "数学": 95}
}

# 增删改查
stu_info = {}
stu_info["张三"] = 18            # 添加
stu_info["张三"] = 19            # 修改
print(stu_info["张三"])          # 查询
print(stu_info.get("张三"))      # 安全查询
del stu_info["张三"]             # 删除
stu_info.pop("李四")             # 删除
stu_info.clear()                 # 清空

# 遍历相关
print(stu_info.keys())           # 所有键
print(stu_info.values())         # 所有值
print(stu_info.items())          # 所有键值对

6. 序列切片


# 字符串切片
text = "Hello, Python World!"
print(text[0:5])        # 前5个字符
print(text[-6:])        # 最后6个字符
print(text[::2])        # 每隔一个字符
print(text[::-1])       # 反转

# 列表切片
fruits = ['apple', 'banana', 'orange']
print(fruits[0:3])      # 前3个元素
print(fruits[-3:])      # 最后3个元素
print(fruits[::2])      # 每隔一个元素

# 元组切片
colors = ('red', 'green', 'blue')
print(colors[0:3])      # 前3个元素
print(colors[::-1])     # 反转

四、函数

1. 普通函数定义与调用


def get_sum1():
    print(f"两个数的和是:{100 + 200}")

def get_sum2(num1, num2):
    print(f"两个数的和是:{num1 + num2}")

def get_sum3(num1, num2):
    return num1 + num2

get_sum1()
get_sum2(100, 200)
sumed = get_sum3(100, 200)
print(f"两个数的和是:{sumed}")

2. 变量作用域


g_number = 100  # 全局变量
def show_number():
    g_number2 = 200  # 局部变量
    print(g_number)
    print(g_number2)

show_number()
print(g_number)

# 修改全局变量
g_number2 = 100
def change_number():
    global g_number2
    g_number2 = 200
    print(g_number2)

change_number()
print(g_number2)

3. 参数传递


def show_user_info(name, age, address):
    print("用户名:%s, 年龄:%d, 地址:%s" % (name, age, address))

# 位置传参
show_user_info("Tom", 23, "美国纽约")

# 关键词传参
show_user_info(name="Tom", age=23, address="美国纽约")
show_user_info(name="Tom", address="美国纽约", age=23)

4. 可变参数


# *args 元组类型
def get_sum(*args):
    sum = 0
    for i in args:
        sum += i
    print(f"求和的结果为:{sum}")

# **kwargs 字典类型
def show_info(**kwargs):
    print(f"姓名:{kwargs['name']},年龄:{kwargs['age']},地址:{kwargs['address']}")

get_sum(1, 2, 3, 4, 5)
show_info(name="Tom", age=23, address="美国纽约")

5. 匿名函数


# 无参
result2 = lambda: 20 + 20
print(result2())

# 有参
result3 = lambda a, b: a + b
print(result3(30, 20))

# 默认参数
result4 = lambda a=10, b=20: a + b
print(result4(100, 200))

# 可变参数
result5 = lambda *args: sum(args)
print(result5(1, 2, 3, 4, 5))

result6 = lambda **kwargs: sum(kwargs.values())
print(result6(a=1, b=2, c=3))

五、文件操作

1. 读取文件


# 普通方式
file = open("test.txt", "r", encoding="utf-8")
data = file.read()
print(data)
file.close()

# with方式(推荐)
with open("test.txt", "r", encoding="utf-8") as file:
    data = file.read()
    print(data)

2. 写入与备份文件


# 二进制文件备份
with open("hm.jpg", "rb") as file:
    data = file.read()
    with open("hm_backup.jpg", "wb") as backup_file:
        backup_file.write(data)

六、模块与包

1. 导入模块


# 导入自定义模块
import my_module1
my_module1.show1()

from my_module1 import show1, show2, show3
show1()

from my_module1 import *
show1()

2. 导入包内模块


import my_package.my_module2
my_package.my_module2.show1()

from my_package.my_module2 import show1, show2, show3
show1()

from my_package.my_module2 import *
show1()

七、面向对象

1. 类与对象


class Cat():
    name = "小猫"
    def eat(self):
        print("小猫在吃鱼")
    def sleep(self):
        print("小猫在睡觉")

# 实例化
cat1 = Cat()
cat1.name = "黑猫"
print(cat1.name)
cat1.eat()
cat1.sleep()

2. 构造方法与属性初始化


class Person(object):
    def __init__(self, name, age, address):
        self.name = name
        self.age = age
        self.address = address
    def __str__(self):
        return "姓名为:%s,年龄为:%d,地址为:%s" % (self.name, self.age, self.address)

p1 = Person("张三", 18, "北京")
print(p1)
print(p1.name)

3. 继承与重写


class Animal(object):
    def eat(self):
        print("动物会吃")
    def sleep(self):
        print("动物会睡")

class Dog(Animal):
    def eat(self):
        print("狗吃肉")

class Cat(Animal):
    def eat(self):
        print("猫吃鱼")

dog = Dog()
dog.eat()
dog.sleep()

cat = Cat()
cat.eat()
cat.sleep()

4. super 函数


class Car(object):
    def __init__(self, brand, model, color):
        self.brand = brand
        self.model = model
        self.color = color
    def run(self):
        print("汽车会跑")

class ElectricCar(Car):
    def __init__(self, brand, model, color):
        super().__init__(brand, model, color)
        self.battery_size = 70
    def run(self):
        print("新能源车会跑")
        print("新能源车的电池容量为:%d" % self.battery_size)
        super().run()

e = ElectricCar("特斯拉", "Model S", "黑色")
e.run()

5. 实例方法、类方法、静态方法


class Student:
    count = 0
    def __init__(self, name, age):
        self.name = name
        self.age = age
        Student.count += 1
    # 实例方法
    def study(self):
        print(f"学生{self.name}正在学习")
    # 静态方法
    @staticmethod
    def show(ss):
        print(f"目前学生数量是:{Student.count}, {ss}")
    # 类方法
    @classmethod
    def show_count(cls):
        print(f"目前学生数量是:{cls.count}")

stu1 = Student("张三", 18)
stu1.study()
Student.show("测试")
Student.show_count()

6. 多继承


class Fly(object):
    def fly(self):
        print("可以飞行")

class Swimmable(object):
    def swim(self):
        print("可以游泳")

class Duck(Fly, Swimmable):
    def __init__(self):
        print("鸭子初始化方法")
    def quack(self):
        print("嘎嘎嘎")

duck = Duck()
duck.fly()
duck.swim()
duck.quack()

八、数据分析基础

1. 空值判断


import numpy as np
import pandas as pd

# 空值表示
print(None, type(None))
print(np.nan, type(np.nan))
print(pd.NA, type(pd.NA))

# 空值检测
print(pd.isna(None))
print(pd.isna(np.nan))
print(pd.isna(pd.NA))
print(pd.notna(None))

2. 读取数据与缺失值处理


import pandas as pd

# 读取数据
df1 = pd.read_csv("data/survey_visited.csv")
df2 = pd.read_csv("data/survey_visited.csv", keep_default_na=False) # 禁用默认空值识别规则
df3 = pd.read_csv("data/survey_visited.csv", keep_default_na=False, na_values=["", None, np.nan, pd.NA]) # 自定义空值识别列表

# 查看缺失值
train = pd.read_csv("data/titanic_train.csv")  
print(train.isna())  # 逐元素判断是否为缺失值(布尔值)
print(train.isna().sum())  # 统计每列缺失值总数
print(train.isna().sum() / len(train))  # 计算每列缺失值占比

# 删除缺失值
new_train1 = train.dropna()  # 删除所有含缺失值的行
new_train3 = train.dropna(subset=["Age"])  # 仅删除Age列有缺失值的行
new_train4 = train.drop("Cabin", axis=1)  # 删除Cabin列(axis=1指定操作列)

# 填充缺失值
data = pd.read_csv("data/students.csv")  # 读取学生数据集
new_train1 = data.fillna(0)  # 用0填充所有缺失值
new_train2 = data.fillna(data["age"].mean())  # 用age列均值填充缺失值
new_train3 = data.ffill()  # 前向填充(用前一行值填充)
new_train4 = data.bfill()  # 后向填充(用后一行值填充)

3. 分组聚合与透视表


import pandas as pd

# 分组聚合
data = pd.read_csv("data/gapminder.tsv", sep="	") 
result1 = data.groupby("year")["lifeExp"].mean()  # 按年份分组,计算平均预期寿命
result2 = data.groupby(["continent", "year"]).agg({"lifeExp": "mean", "gdpPercap": "max"})  # 按洲+年份分组,计算预期寿命均值、人均GDP最大值

# 透视表
data = pd.read_csv("data/tips.csv", sep=",")  
df1 = data.groupby(["sex", "time"])["size"].mean()  # 按性别+用餐时段分组,计算平均用餐人数
df2 = data.pivot_table(index=["sex", "time"], values="size", aggfunc="mean")  # 透视表实现同上分组聚合效果
df3 = data.pivot_table(index=["sex"], columns="time", values="size", aggfunc="mean")  # 透视表:行=性别,列=用餐时段,值=平均用餐人数
© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
黑猫酷豹的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容