python的数据分析三件套详细介绍

一、常用三件套

三大神器(numpy,pandas,matplotlib)。接下来就一一列举常用的方法。

注意先了解两个必备函数:
enumerate() 函数是Python内置函数之一,用于将一个可迭代对象(如列表、元组或字符串)转换为一个枚举对象,同时返回索引和对应的值。具体来说,它将每个元素与一个序号配对,使得在迭代过程中可以同时获得每个元素的值和其在序列中的索引。

enumerate() 函数的主要作用是在迭代过程中同时获取元素值和其对应的索引。在数据分析中常用它利用for循环取出索引 i 和值 name。

递推式构造列表(list comprehension)创建了毕达哥拉斯三元组:

>>> [(x,y,z) for x in range(1,30) for y in range(x,30) for z in range(y,30) if x**2 + y**2 == z**2]
[(3, 4, 5), (5, 12, 13), (6, 8, 10), (7, 24, 25), (8, 15, 17), (9, 12, 15), (10, 24, 26), (12, 16, 20), (15, 20, 25), (20, 21, 29)]

## 或者简单的如下
>>> scores = [[random.randrange(50,101) for _ in range(3)] for _ in range(5)]

二、numpy库

NumPy是Python语言的一个科学计算库,它提供了高性能的多维数组对象和相关工具,可以用于处理数组、矩阵、数值计算等各种数学任务。以下是 NumPy 库中一些常见的函数及其用法:

axis() 是一个 NumPy 中的函数,用于沿着指定的轴执行操作。它用于指定在数组的哪个轴上应用函数,以便在数组的不同维度上执行计算。常用于:

# 在n维数组上,axis = 0 是对列操作;axis = 1是对行操作。
sorces.max(axis = 0)

np.array():创建一个 NumPy 数组。例如:

import numpy as np

a = np.array([1, 2, 3, 4])
print(a)

输出结果为:[1 2 3 4]。

np.arange():创建一个指定范围内的等差数列。例如:

import numpy as np

a = np.arange(0, 10, 2)
print(a)

输出结果为:[0 2 4 6 8]。

np.linspace():创建一个指定范围内的等间隔数列。例如:

import numpy as np

a = np.linspace(0, 10, 5)
print(a)

输出结果为:[ 0. 2.5 5. 7.5 10. ]。

np.zeros():创建一个指定形状的全零数组。例如:

import numpy as np

a = np.zeros((3, 3))
print(a)

输出结果为:

[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]

np.ones():创建一个指定形状的全一数组。例如:

import numpy as np

a = np.ones((2, 2))
print(a)

输出结果为:
[[1. 1.]
[1. 1.]]

np.eye():创建一个指定大小的单位矩阵。例如:

import numpy as np

a = np.eye(3)
print(a)

输出结果为:
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]

np.random.rand():创建一个指定形状的随机数数组。例如:

import numpy as np

a = np.random.rand(2, 3)
print(a)

输出结果为:
[[0.96828581 0.29255347 0.82946626]
[0.84055973 0.39246847 0.51868462]]

np.max():返回数组中的最大值。例如:

import numpy as np

a = np.array([1, 2, 3, 4])
max_value = np.max(a)
print(max_value)

输出结果为:4。

np.min():返回数组中的最小值。例如:

import numpy as np

a = np.array([1, 2, 3, 4])
min_value = np.min(a)
print(min_value)

输出结果为:1。

np.mean():返回数组中的平均值。例如:

import numpy as np

a = np.array([1, 2, 3, 4])
mean_value = np.mean(a)
print(mean_value)

输出结果为:2.5

np.sum():返回数组中所有元素的总和。例如:

import numpy as np

a = np.array([1, 2, 3, 4])
sum_value = np.sum(a)
print(sum_value)

输出结果为:10。

np.dot():计算两个数组的点积。例如:

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
dot_value = np.dot(a, b)
print(dot_value)

输出结果为:
[[19 22]
[43 50]]

  以上列举了一些 NumPy 库中常用的函数,其中包括创建数组、数组操作、数组计算等方面的功能,可以帮助我们更方便地进行数值计算和科学计算。

三、pandas

在数据分析师的日常工作中,70%到80%都涉及到理解和清理数据,也就是数据探索和数据挖掘。

Pandas主要用于数据分析,这是最常用的Python库之一。它为你提供了一些最有用的工具来对数据进行探索、清理和分析。使用Pandas,你可以加载、准备、操作和分析各种结构化数据。以下是 Pandas 库中一些常见的函数及其用法:

pd.DataFrame():创建一个 Pandas DataFrame。例如:

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 40],
    'gender': ['F', 'M', 'M', 'M']
}
df = pd.DataFrame(data)
print(df)

输出结果为:


       name  age gender
0     Alice   25      F
1       Bob   30      M
2   Charlie   35      M
3     David   40      M

pd.read_csv():从 CSV 文件中读取数据并创建一个 Pandas DataFrame。例如:

import pandas as pd

df = pd.read_csv('data.csv')
print(df)

df.head():返回 DataFrame 的前几行数据。例如:

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 40],
    'gender': ['F', 'M', 'M', 'M']
}
df = pd.DataFrame(data)
print(df.head(2))

输出结果为:

    name  age gender
0  Alice   25      F
1    Bob   30      M

df.tail():返回 DataFrame 的后几行数据。例如:

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 40],
    'gender': ['F', 'M', 'M', 'M']
}
df = pd.DataFrame(data)
print(df.tail(2))

输出结果为:


      name  age gender
2  Charlie   35      M
3    David   40      M

df.describe():返回 DataFrame 的统计信息。例如:


import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 40],
    'gender': ['F', 'M', 'M', 'M']
}
df = pd.DataFrame(data)
print(df.describe())

输出结果为:


             age
count   4.000000
mean   32.500000
std     6.454972  # 标准差
min    25.000000
25%    28.750000
50%    32.500000
75%    36.250000
max    40.000000

df.groupby():按照指定的列对 DataFrame 进行分组。例如:


import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emma', 'Frank'],
    'age': [25, 30, 35, 40, 25, 30],
    'gender': ['F', 'M', 'M', 'M', 'F', 'M']
}
df = pd.DataFrame(data)
grouped = df.groupby('age')
for name, group in grouped:
    print(name)
    print(group)

输出结果为:

25
    name  age gender
0  Alice   25      F
4   Emma   25      F
30
   name  age gender
1   Bob   30      M
5  Frank   30      M
35
      name  age gender
2  Charlie   35      M
40
    name  age gender
3  David   40      M

df.pivot_table():创建一个透视表。例如:

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emma', 'Frank'],
    'age': [25, 30, 35, 40, 25, 30],
    'gender': ['F', 'M', 'M', 'M', 'F', 'M'],
    'score': [90, 85, 80, 75, 70, 65]
}
df = pd.DataFrame(data)
pivot_table = df.pivot_table(values='score', index='name', columns='age')
print(pivot_table)

输出结果为:

age      25    30    35    40
name                        
Alice  90.0   NaN   NaN   NaN
Bob     NaN  85.0   NaN   NaN
Charlie NaN   NaN  80.0   NaN
David   NaN   NaN   NaN  75.0
Emma   70.0   NaN   NaN   NaN
Frank   NaN  65.0   NaN   NaN

透视表中,行对应 index,列对应 columns,值对应 values。上述代码中,透视表中的值为 score,行为 name,列为 age。

透视表可以方便地展示数据,并进行数据分析。

df.merge():将两个 DataFrame 进行合并。例如:


import pandas as pd

data1 = {
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 40],
    'gender': ['F', 'M', 'M', 'M']
}
data2 = {
    'name': ['Alice', 'Bob', 'Charlie', 'Emma'],
    'score': [90, 85, 80, 75],
    'grade': ['A', 'B', 'C', 'B']
}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
merged = pd.merge(df1, df2, on='name')
print(merged)

输出结果为:


      name  age gender  score grade
0    Alice   25      F     90     A
1      Bob   30      M     85     B
2  Charlie   35      M     80     C

上述代码中,df1 和 df2 分别为两个 DataFrame,它们都有 name 这一列,可以通过 pd.merge() 将它们进行合并,合并后的 DataFrame 包含了两个 DataFrame 中的共同列和所有行。

除了上述列举的函数外,pandas 库还提供了很多其他的函数和方法,可以根据不同的需求进行使用。

四、matplotlib

matplotlib 是 Python 的一个绘图库,可以用来创建各种静态、动态、交互式的数据可视化。下面列举一些常用的 matplotlib 函数和用法:

plt.plot():绘制线形图。例如:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 1000)
y = np.sin(x)
plt.plot(x, y)
plt.show()

上述代码中,使用 np.linspace() 函数生成了 1000 个等间距的数据点,然后计算了这些数据点的正弦值,最后使用 plt.plot() 函数将这些数据点连成了一条线,并用 plt.show() 函数显示了出来。

plt.scatter():绘制散点图。例如:

import matplotlib.pyplot as plt
import numpy as np

x = np.random.randn(1000)
y = np.random.randn(1000)
plt.scatter(x, y)
plt.show()

上述代码中,使用 np.random.randn() 函数生成了 1000 个标准正态分布的数据点,然后使用 plt.scatter() 函数将这些数据点绘制成散点图。

plt.bar():绘制柱状图。例如:

import matplotlib.pyplot as plt
import numpy as np

x = ['A', 'B', 'C', 'D', 'E']
y = [20, 35, 30, 25, 40]
plt.bar(x, y)
plt.show()

上述代码中,x 列表包含了五个类别,y 列表包含了对应的数量,使用 plt.bar() 函数将它们绘制成柱状图。

plt.pie():绘制饼图。例如:


import matplotlib.pyplot as plt

labels = ['A', 'B', 'C', 'D', 'E']
sizes = [20, 35, 30, 25, 40]
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.axis('equal')
plt.show()

上述代码中,labels 列表包含了五个类别,sizes 列表包含了对应的数量,使用 plt.pie() 函数将它们绘制成饼图,并使用 autopct 参数设置显示百分比,使用 plt.axis(‘equal’) 函数使饼图呈圆形。

plt.hist():绘制直方图。例如:


import matplotlib.pyplot as plt
import numpy as np

x = np.random.randn(1000)
plt.hist(x, bins=20)
plt.show()

上述代码中,使用 np.random.randn() 函数生成了 1000 个标准正态分布的数据,利用plt.hist()函数输出直方图。

plt.imshow():绘制图像。例如:

import matplotlib.pyplot as plt
import numpy as np
from PIL import Image

img = Image.open('test.jpg')
plt.imshow(np.array(img))
plt.show()

上述代码中,使用 PIL 库的 Image.open() 函数打开一张图片,然后使用 plt.imshow() 函数将其显示出来。

plt.subplot():创建子图。例如:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 1000)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)

plt.subplot(2, 2, 1)
plt.plot(x, y1)

plt.subplot(2, 2, 2)
plt.plot(x, y2)

plt.subplot(2, 1, 2)
plt.plot(x, y3)

plt.show()

上述代码中,使用 plt.subplot() 函数创建了一个包含三个子图的大图,其中第一个子图位于第一行第一列,第二个子图位于第一行第二列,第三个子图占据了整个第二行。然后分别在三个子图中绘制了不同的函数。

以上是 matplotlib 的一些常用函数和用法,还有许多其他的函数和用法可以根据具体需求灵活使用。

持续更新ing

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值