当前位置:   article > 正文

科学计算利器:Numpy与Pandas快速上手_数据科学计算 numpy pandas

数据科学计算 numpy pandas

目录

1.引言

2.Numpy数组操作与高效计算

2.1 创建Numpy数组

2.2 数组属性与基本操作

2.3 数组运算与广播机制

3.Pandas数据框操作与数据清洗技巧

3.1 创建Pandas数据框

3.2 数据框属性与基本操作

3.3 数据清洗与预处理

4.使用Pandas处理真实数据实例

4.1.处理数据实例1

4.2.处理数据实例2

4.1.1. 描述性统计

4.1.2. 数据可视化

4.1.3 特征工程

4.1.4 机器学习模型训练


1.引言

        在Python的数据科学与人工智能领域,Numpy和Pandas是两个不可或缺的核心库。Numpy提供了高效的数值计算能力,而Pandas则专注于数据清洗、整理与分析。本篇文章将带领您快速掌握这两个库的基本使用,为后续的数据处理与分析工作打下坚实基础。  更多Python在人工智能中的使用方法,欢迎关注《Python人工智能实战》栏目!

2.Numpy数组操作与高效计算

        Numpy是Python科学计算库中的基石,以其高效的多维数组对象(ndarray)和丰富的数学函数库,为数值计算提供了强大支持。Numpy数组可以通过多种方式创建,例如使用numpy.array()函数或者直接使用Numpy提供的函数如numpy.zeros()numpy.ones()等。

        下面通过代码示例,快速了解Numpy数组操作与高效计算。

2.1 创建Numpy数组

  1. import numpy as np
  2. # 从列表创建一维数组
  3. arr1 = np.array([1, 2, 3, 4, 5])
  4. print(arr1)
  5. # 输出:[1 2 3 4 5]
  6. # 从二维列表创建二维数组
  7. arr2 = np.array([[1, 2, 3], [4, 5, 6]])
  8. print(arr2)
  9. # 输出:
  10. # [[1 2 3]
  11. # [4 5 6]]
  12. # 使用numpy.array()创建数组
  13. arr = np.array([1, 2, 3, 4, 5])
  14. print(arr)
  15. # 输出:
  16. # [1 2 3 4 5]
  17. # 使用numpy.zeros()创建全零数组
  18. zeros_arr = np.zeros(5)
  19. print(zeros_arr)
  20. # 输出:
  21. # [0. 0. 0. 0. 0.]
  22. # 使用numpy.ones()创建全一数组
  23. ones_arr = np.ones((2, 3))
  24. print(ones_arr)
  25. # 输出:
  26. # [[1. 1. 1.]
  27. # [1. 1. 1.]]
'
运行

2.2 数组属性与基本操作

  1. # 获取数组形状、维度和元素个数
  2. print(arr2.shape) # 输出:(2, 3)
  3. print(arr2.ndim) # 输出:2
  4. print(arr2.size) # 输出:6
  5. # 索引与切片
  6. print(arr2[0, 1]) # 输出:2
  7. print(arr2[:, 1:]) # 输出:
  8. # [[2 3]
  9. # [5 6]]
  10. # 数组拼接与拆分
  11. arr3 = np.concatenate((arr1, arr2), axis=0)
  12. print(arr3)
  13. # 输出:
  14. # [[1 2 3]
  15. # [4 5 6]
  16. # [1 2 3 4 5]]
  17. arr4, arr5 = np.split(arr3, [2], axis=0)
  18. print(arr4, arr5)
  19. # 输出:
  20. # [[1 2 3]
  21. # [4 5 6]]
  22. # [[1 2 3 4 5]]

2.3 数组运算与广播机制

  1. # 元素级运算
  2. arr6 = arr1 + arr1
  3. print(arr6)
  4. # 输出:[2 4 6 8 10]
  5. # 广播机制:数组与标量运算
  6. arr7 = arr1 * 2
  7. print(arr7)
  8. # 输出:[2 4 6 8 10]
  9. # 矩阵乘法
  10. arr8 = np.dot(arr2, arr2.T)
  11. print(arr8)
  12. # 输出:
  13. # [[14 32]
  14. # [32 77]]

3.Pandas数据框操作与数据清洗技巧

        Pandas是Python数据分析的主力库,以其灵活的数据框(DataFrame)对象和丰富的数据处理函数,极大简化了数据清洗、转换和分析工作。下面我们将通过代码示例,领略Pandas的强大之处。

3.1 创建Pandas数据框

  1. import pandas as pd
  2. data = {
  3. 'Name': ['Alice', 'Bob', 'Charlie'],
  4. 'Age': [25, 30, 35],
  5. 'Salary': [50000, 60000, 70000]
  6. }
  7. df = pd.DataFrame(data)
  8. print(df)
  9. # 输出:
  10. # Name Age Salary
  11. # 0 Alice 25 50000
  12. # 1 Bob 30 60000
  13. # 2 Charlie 35 70000
'
运行

3.2 数据框属性与基本操作

  1. # 查看数据框基本信息
  2. print(df.shape) # 输出:(3, 3)
  3. print(df.columns) # 输出:Index(['Name', 'Age', 'Salary'], dtype='object')
  4. print(df.dtypes) # 输出:Name object
  5. # Age int64
  6. # Salary int64
  7. # dtype: object
  8. # 索引与切片
  9. print(df.iloc[1]) # 输出:Name Bob
  10. # Age 30
  11. # Salary 60000
  12. # Name: 1, dtype: object
  13. print(df.loc[:1, 'Age':'Salary']) # 输出:
  14. # Age Salary
  15. # 0 25 50000
  16. # 1 30 60000
  17. # 数据筛选与排序
  18. mask = df['Age'] > 30
  19. print(df[mask]) # 输出:
  20. # Name Age Salary
  21. # 1 Bob 30 60000
  22. # 2 Charlie 35 70000
  23. df_sorted = df.sort_values(by='Salary', ascending=False)
  24. print(df_sorted)
  25. # 输出:
  26. # Name Age Salary
  27. # 2 Charlie 35 70000
  28. # 1 Bob 30 60000
  29. # 0 Alice 25 50000

3.3 数据清洗与预处理

  1. # 缺失值处理,这里先添加一列模拟缺失列
  2. df['New Column'] = [np.nan, 1, 2]
  3. print(df.dropna(subset=['New Column'])) # 输出:
  4. # Name Age Salary New Column
  5. # 1 Bob 30 60000 1.0
  6. # 2 Charlie 35 70000 2.0
  7. # 数据类型转换
  8. df['Age'] = df['Age'].astype('float')
  9. print(df.dtypes) # 输出:Name object
  10. # Age float64
  11. # Salary int64
  12. # dtype: object
  13. # 数据聚合与统计
  14. print(df.groupby('Name').agg({'Age': 'mean', 'Salary': 'sum'}))
  15. # 输出:
  16. # Age Salary
  17. # Name
  18. # Alice 25.000000 50000
  19. # Bob 30.000000 60000
  20. # Charlie 35.000000 70000

4.使用Pandas处理真实数据实例

4.1.处理数据实例1

  1. import pandas as pd
  2. # 读取CSV文件
  3. data = pd.read_csv('sales_data.csv')
  4. # 数据清洗:删除含有缺失值的行
  5. cleaned_data = data.dropna()
  6. # 数据清洗:将某列的数据类型转换为整数
  7. cleaned_data['quantity'] = cleaned_data['quantity'].astype(int)
  8. # 数据分析:计算销售额的总和
  9. total_sales = cleaned_data['sales_amount'].sum()
  10. # 数据分析:分组计算平均销售额
  11. average_sales_per_category = cleaned_data.groupby('category')['sales_amount'].mean()
  12. # 输出结果
  13. print("Cleaned Data:")
  14. print(cleaned_data.head()) # 显示清洗后数据的前几行
  15. print("Total Sales:", total_sales)
  16. print("Average Sales per Category:\n", average_sales_per_category)

       在这个示例中,CSV文件包含了四列数据:product_id(产品ID)、category(产品类别)、quantity(销售数量)和sales_amount(销售额)。其中,有些行在quantitysales_amount列中包含了缺失值(NaN)。

        使用上面的Pandas示例代码时,dropna()函数将删除包含任何缺失值的行,所以ID为5和7的行将被移除。之后,astype(int)quantity列中的数据类型转换为整数,前提是该列中不再包含缺失值或其他非整数类型的数据。

        以下为示例数据,保存到本地为sales_data.csv即可使用:

product_id,category,quantity,sales_amount  
1,Electronics,5,100.0  
2,Books,3,45.5  
3,Electronics,2,80.0  
4,Clothing,4,120.0  
5,Books,NaN,30.0  
6,Electronics,7,210.0  
7,Clothing,NaN,NaN  
8,Books,2,50.0  
9,Electronics,3,90.0  
10,Clothing,1,60.0

4.2.处理数据实例2

        这里我们以鸢尾花(Iris)数据集为例,展示如何使用Pandas进行数据分析。首先,我们需要导入数据集:

  1. url = "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv"
  2. iris_df = pd.read_csv(url)
  3. print(iris_df.head())
  4. # 输出:
  5. # sepal_length sepal_width petal_length petal_width species
  6. # 0 5.1 3.5 1.4 0.2 setosa
  7. # 1 4.9 3.0 1.4 0.2 setosa
  8. # 2 4.7 3.2 1.3 0.2 setosa
  9. # 3 4.6 3.1 1.5 0.2 setosa
  10. # 4 5.0 3.6 1.4 0.2 setosa

         接下来,我们可以进行一些基本的数据分析:

4.2.1. 描述性统计

  1. print(iris_df.describe())
  2. # 输出:
  3. # sepal_length sepal_width petal_length petal_width
  4. # count 150.000000 150.000000 150.000000 150.000000
  5. # mean 5.843333 3.057333 3.758000 1.199333
  6. # std 0.828066 0.435866 1.765298 0.762238
  7. # min 4.300000 2.000000 1.000000 0.100000
  8. # 25% 5.100000 2.800000 1.600000 0.300000
  9. # 50% 5.800000 3.000000 4.350000 1.300000
  10. # 75% 6.400000 3.300000 5.100000 1.800000
  11. # max 7.900000 4.000000 6.900000 2.500000

4.2.2. 数据可视化

        借助于matplotlib库,可以快速绘制一些基础图表,以便对数据进行直观的观察和理解:

  1. import matplotlib.pyplot as plt
  2. # 绘制箱线图,展示各特征的分布情况
  3. iris_df.plot(kind='box', figsize=(10, 6))
  4. plt.title('Iris Dataset Box Plots')
  5. plt.xlabel('Features')
  6. plt.ylabel('Values')
  7. plt.show()
  8. # 绘制散点矩阵,查看特征间的相关性
  9. sns.pairplot(iris_df, hue='species')
  10. plt.show()

        可视化效果: 

可视化效果

4.2.3 特征工程

        在进行机器学习建模之前,我们常常需要对原始数据进行特征工程,包括特征选择、特征转换等操作。例如,可以计算花朵的“面积比”作为新的特征:

  1. iris_df['sepal_area'] = iris_df['sepal_length'] * iris_df['sepal_width']
  2. iris_df['petal_area'] = iris_df['petal_length'] * iris_df['petal_width']

4.2.4 机器学习模型训练

        这里以KMeans聚类为例,对鸢尾花数据进行分类:

  1. from sklearn.cluster import KMeans
  2. # 设置聚类数量为3,与鸢尾花的真实类别数量一致
  3. kmeans = KMeans(n_clusters=3)
  4. # 使用花瓣长度和宽度作为特征进行聚类
  5. X = iris_df[['petal_length', 'petal_width']]
  6. kmeans.fit(X)
  7. # 添加聚类结果到数据框
  8. iris_df['predicted_species'] = kmeans.labels_

5.总结

        至此,已经完成了Numpy的基础用法和代码示例,并结合Pandas对鸢尾花数据集的基本探索性分析、特征工程和初步的机器学习模型训练。这只是一个简单的示例,实际数据分析过程中可能还需要进行更深入的数据清洗、特征选择、模型调优等步骤。通过上述步骤,您应该对使用Pandas进行数据分析有了初步的认识和实践体验。 更多Python在人工智能中的使用方法,欢迎关注《Python人工智能实战》栏目!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/937780
推荐阅读
相关标签
  

闽ICP备14008679号