欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 数据分析与挖掘

数据分析与挖掘

2025/4/20 6:49:50 来源:https://blog.csdn.net/2301_81499791/article/details/147356096  浏览:    关键词:数据分析与挖掘

Python 基本语法

  • 变量与数据类型

    • Python 中变量无需声明,直接赋值即可。

    • 常见的数据类型有数值型(整型 int、浮点型 float、复数型 complex)、字符串型(str,用单引号、双引号或三引号括起来)、布尔型(bool,True 和 False)。

  • 运算符

    • 算术运算符(+、-、*、/、%、**、//)、

    • 比较运算符(==、!=、>、<、>=、<=)

    • 逻辑运算符(and、or、not)

  • 输入输出 :使用 input() 函数接收用户输入,print() 函数输出结果,eval()函数去掉双引号。

  • 数据结构运用

    • 列表(list) :有序可变序列,用方括号 [] 定义,如 numbers = [1, 2, 3, 4]。支持索引、切片、追加(append())、删除(del、remove()、pop())等操作。
    • 元组(tuple) :有序不可变序列,用圆括号 () 定义,如 fruits = (“apple”, “banana”, “orange”)。访问元素方式与列表类似,但不能修改元素。
    • 字典(dict) :键值对集合,用花括号 {} 定义,如 person = {“name”: “Tom”, “age”: 20}。通过键来访问和修改值,键必须唯一且不可变。
    • 集合(set) :无序不重复元素集合,用大括号 {} 或 set() 函数创建,如 colors = {“red”, “green”, “blue”}。支持集合运算(如交集 &、并集 |、差集 -)。
  • 程序流程控制

    • 顺序结构 :按照代码书写的顺序依次执行。
    • 选择结构 :if 语句,根据条件是否成立选择执行不同的代码块。基本语法为 if 条件 1: 代码块 1 elif 条件 2: 代码块 2 … else: 代码块 n。
    • 循环结构 :for 循环用于遍历可迭代对象(如列表、元组、字符串、字典、集合),如 for num in numbers: print(num)。while 循环根据条件判断是否执行循环体,如 while count < 5: print(count) count +=1。

二、函数

  • 函数的语法 :定义函数使用 def 关键字,后跟函数名、参数列表(可选)、冒号和函数体。函数体结束可使用 return 语句返回结果。例如:

    def add(a, b):return a + b
    
  • 函数调用 :直接使用函数名并传入相应参数即可,如 result = add(3, 5),调用 add 函数并传入 3 和 5 作为参数,返回结果 8 赋值给 result。

  • 参数

    • 位置参数 :按照定义函数时的参数位置顺序传入,如上面的 a 和 b 就是位置参数。

    • 默认参数 :在定义函数时给参数指定默认值,调用时可不传该参数。例如:def greet(name, msg=“Hello”): print(msg, name),调用 greet(“Tom”) 时 msg 使用默认值 “Hello”。

    • 关键字参数 :调用函数时通过参数名和值的形式传参,这样可以改变参数的顺序。如 greet(msg=“Hi”, name=“Tom”)。

    • 可变参数 :允许函数接收任意数量的参数。*args 用于接收位置参数,形成元组;**kwargs 用于接收关键字参数,形成字典。例如:

      def func(*args, **kwargs):print(args)print(kwargs)
      func(1, 2, 3, name="Tom", age=20)
      
  • Lambda匿名函数:

    square = lambda x: x ** 2
    print(square(4))    # 输出16   
    
  • 自定义函数的编程实现 :根据需求设计函数的功能,明确输入参数和返回值,编写函数体实现相应逻辑。例如自定义一个计算阶乘的函数:

    def factorial(n):if n == 0:return 1else:return n * factorial(n-1)
    

三、正则表达式:提取,匹配与替换

  • 元字符与特殊字符

    • \d匹配数字,\w匹配字母数字,.匹配任意字符(除换行符)

    • ^开头,$ 结尾,| 表示或

    • *匹配前面的字符零次或多次,+ 匹配前面的字符一次或多次,? 匹配前面的字符零次或一次,[] 匹配括号内的任意一个字符

  • 字符获取 :使用 re 模块中的 findall() 函数可获取字符串中所有匹配正则表达式的字符。

    import re 
    pattern = r"\d+" 
    string = "I have 2 apples and 3 bananas." result = re.findall(pattern, string) print(result) 输出 ['2', '3'],获取字符串中的所有数字。
    
  • 匹配match() 函数从字符串开头开始匹配,若匹配成功返回匹配对象,否则返回 None。search() 函数在整个字符串中搜索匹配,找到第一个匹配的位置后返回匹配对象。例如:

    pattern = r"apple"
    string1 = "I like apple."
    string2 = "apple is delicious."
    print(re.match(pattern, string1)) # None,因为不是从开头匹配print(re.search(pattern, string1)) # 匹配对象print(re.match(pattern, string2)) # 匹配对象
    
  • 替换 :sub() 函数用于替换字符串中匹配正则表达式的部分。例如:

    pattern = r"apple"string = "I like apple and apple pie."new_string = re.sub(pattern, "orange", string)
    print(new_string) # 输出 "I like orange and orange pie."
    

四、文件相关知识

  • 文本文件

    • 读取 :使用 open() 函数打开文件,默认是只读模式(‘r’)。例如:
     f = open("test.txt", "r")content = f.read() # 读取全部内容# 按行读取 content = f.readlines()f.close()		
    ``
  • 写入 :以写入模式(‘w’)打开文件(会覆盖原有内容)或追加模式(‘a’)打开文件(在文件末尾追加内容)。例如:

     f = open("test.txt", "w")f.write("Hello, world!")f.close()
    
  • CSV 文件 :利用 Python 的 csv 模块进行读写。读取时使用 csv.reader() 或 csv.DictReader(),写入时使用 csv.writer() 或 csv.DictWriter()。例如:

     import csv
    # 读取with open("data.csv", "r") as f:reader = csv.reader(f)for row in reader:print(row)# 写入with open("data.csv", "w", newline="") as f:writer = csv.writer(f)writer.writerow(["Name", "Age"])writer.writerow(["Tom", 20])
    
  • Excel 文件 :借助 pandas 库的 read_excel() 函数读取,to_excel() 函数写入。例如:

    #读取df = pd.read_excel("data.xlsx")print(df)
    # 写入df.to_excel("new_data.xlsx", index=False)
    
  • JSON文件
    import json
    data = {"name": "Alice", "age": 25}
    with open("data.json", "w") as f:json.dump(data, f)            # 写入with open("data.json", "r") as f:loaded_data = json.load(f)    # 读取
    

五、NumPy 数值计算基础知识

  • NumPy 数组的创建 :使用 numpy.array() 函数创建数组,例如:

    import numpy as np
    arr = np.array([1, 2, 3, 4, 5])
    
  • 数组的基本属性 :包括形状(shape)、维度(ndim)、数据类型(dtype)等。例如:

    print(arr.shape) # 输出 (5,)
    print(arr.ndim) # 输出 1
    print(arr.dtype) # 输出 int32(具体类型可能因系统和数据而异)
    
  • 数组的运算(广播机制) :支持元素级运算,如加、减、乘、除、幂等。例如:

    arr1 = np.array([1, 2, 3])
    arr2 = np.array([4, 5, 6])
    print(arr1 + arr2) # 输出 [5 7 9]
    print(arr1 * arr2) # 输出 [4 10 18]
    # 广播机制
    a = np.array([[1,2][3,4]])
    b = np.array([10,20])
    print(a + b) # 广播加法 -> [[11,22][13,24]]
    
  • 数组的索引与切片 :与 Python 列表类似,但更强大。可以进行多维数组的索引和切片。例如:

    arr = np.array([[1, 2, 3], [4, 5, 6]])
    print(arr[0, 1]) # 输出 2,访问第一行第二列元素print(arr[:, 1:3]) # 输出 [[2 3] [5 6]],获取所有行的第 2 到第 3 列
    

六、pandas 统计分析基础知识

  • DataFrame 和 Series

    • DataFrame 是二维表格型数据结构,可看作是由多个 Series 组成。

    • Series 是一维数组,与 NumPy 数组类似,但带有标签(索引)。例如:

      import pandas as pd
      data = {'Name': ['Tom', 'Jerry'], 'Age': [20, 18]}
      df = pd.DataFrame(data)print(df)
      # 输出
      Name Age
      0 Tom 20
      1 Jerry 18 
      
  • 基本统计分析 :使用 describe() 函数可获取数据的统计摘要,包括计数、均值、标准差、最小值、四分位数、最大值等。例如:print(df.describe())

  • 数据排序 :sort_values() 函数按指定列的值排序,ascending 参数控制升序或降序。例如:

    # 按年龄降序排列
    df_sorted = df.sort_values(by="Age", ascending=False)
    print(df_sorted)
    

七、pandas 数据预处理知识

  • 数据清洗

    • 处理缺失值

      • 使用 isnull() 函数检查缺失值,

      • dropna() 函数删除含有缺失值的行或列,

      • fillna() 函数填充缺失值。例如:

        df = pd.DataFrame({'A': [1, 2, None, 4], 'B': [5, None, None, 8]})print(df.isnull()) # 显示缺失值位置df_drop = df.dropna() # 删除有缺失值的行df_fill = df.fillna(0) # 用 0 填充缺失值
        
    • 数据去重 :drop_duplicates() 函数用于删除重复数据。例如:

      df = pd.DataFrame({'A': [1, 1, 2, 2], 'B': [3, 3, 4, 4]})
      df_unique = df.drop_duplicates()
      print(df_unique)
      
  • 数据转换

    • 独热编码

      df_encoded = pd.get_dummies(df, columns=["Category"])

    • 数据类型转换 :astype() 函数可将数据转换为指定类型。例如:df['A'] = df['A'].astype(int)

    • 数据标准化、归一化 :对于数值型数据,可使用 preprocessing 模块中的 scale() 函数进行标准化(Z-score 标准化)或 minmax_scale() 函数进行归一化。例如:

      from sklearn import preprocessing
      data_standardized = preprocessing.scale(df['A'])
      data_normalized = preprocessing.minmax_scale(df['A'])
      
  • 数据合并

    • concat() 函数 :用于沿着某一轴将多个 DataFrame 或 Series 连接起来。例如:

      df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
      df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
      df_concat = pd.concat([df1, df2], axis=0) # 按行连接
      
    • merge() 函数 :根据一个或多个键将行连接起来,类似于 SQL 中的 join 操作。例如:

      df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value1': [1, 2, 3]})
      df2 = pd.DataFrame({'key': ['A', 'B', 'D'], 'value2': [4, 5, 6]})
      df_merged = pd.merge(df1, df2, on='key') # 内连接,只保留两个表都有 key 的行
      

八 总结

  1. 数据获取:正则表达式提取日志关键字段,pandas读取CSV/Excel。
  2. 清洗与转换:处理缺失值、异常值,标准化数值特征。
  3. 分析建模:Numpy加速数值计算,pandas进行聚合统计。
  4. 自动化流程:通过函数封装常用操作(如数据清洗函数)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词