python常用模块

该教程涵盖了Numpy的基础操作,包括创建、属性、运算、索引、合并、分割和拷贝;Pandas的使用,如数据框创建、选择数据以及导入导出;还介绍了Matplotlib的基本绘图方法,如绘制多条曲线、设置坐标轴、图例等。通过实例详细解释了每个概念和操作。
摘要由CSDN通过智能技术生成

【莫烦Python】Numpy & Pandas (数据处理教程)_哔哩哔哩_bilibili

【莫烦Python】Matplotlib Python 画图教程_哔哩哔哩_bilibili

一.numpy

1.基本属性

import numpy as np

#将列表转化成numpy的矩阵
array = np.array([[1, 2, 3],
                  [4, 5, 6]])

#输出矩阵的基本信息
print(array)                       
print('num of dim:', array.ndim)
print('shape:', array.shape)
print('size:', array.size)

2.创造各种各样array

import numpy as np

#构造array时可以设置类型
array = np.array([1, 2, 3], dtype = int) #是dtype不是type
print(array.dtype)    #输出int 32
b = np.array([1, 2, 3], dtype = float) #是dtype不是type
print(b.dtype)    #输出float64

#设置零矩阵
c = np.zeros((3, 3))   #注意多了一个括号
print(c)
'''
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
'''

#设置一矩阵
d = np.ones((3, 3))
print(d)
'''
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
'''

#生成有序数列
e = np.arange(10, 20, 2) #类似range  左开右闭 步长
print(e)
'''
[10 12 14 16 18]
'''
f = np.arange(12).reshape((3, 4))  #reshape操作
print(f)
'''
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
'''

#生成线段
g = np.linspace(0, 10, 5)   #线段上五个点均分
print(g)
'''
[ 0.   2.5  5.   7.5 10. ]
'''

3.基础运算

import numpy as np

a = np.array([1, 2, 3]);
b = np.array([4, 5, 6]);

#加法直接加
print(a + b)

#次方用**
print(a**2)

#三角函数
print(np.sin(a))

#判断大小
print(a < 2)
#[ True False False]

a = np.array([[1, 1],
             [0, 1]])
b = np.arange(4).reshape((2, 2))

#按位置乘
print(a * b)

#矩阵相乘 以下两种均可
print(np.dot(a, b))
print(a.dot(b))

#随机生成0到1的数
a = np.random.random((2, 3))
print(a)
print(np.sum(a)) #所有元素和
print(np.max(a)) #最大元素
print(np.min(a)) #最小元素

#axis代表维度 0表示列 1表示行
print(np.sum(a, axis=1))  
print(np.max(a, axis=0))
print(np.min(a, axis=1))

A = np.arange(2, 14).reshape((3, 4))
'''
[[ 2  3  4  5]
 [ 6  7  8  9]
 [10 11 12 13]]
'''
print(np.argmin(A))    #最小值的索引 输出0
print(np.argmax(A))   #最大值的索引 输出11
print(np.mean(A))     #均值 7.5 A.mean()也行
print(np.mean(A, axis=0))     #0是对列求平均 1是行
print(np.median(A))   #中位数7.5
print(np.cumsum(A))   #变成前缀和
print(np.diff(A))     #差分 di = ai+1 - ai
print(np.nonzero(A))  #非零位置,输出两个array,一个是位置的行一个是位置的列
print(np.sort(A))     #对每一行进行排序
print(A.T)            #转置 np.transpose(A)也可
print(A.clip(5, 9))   #所有小于5的数变5,大于9的数变9

4.索引

import numpy as np

A = np.arange(3, 15).reshape((3, 4))
print(A)
'''
[[ 3  4  5  6]
 [ 7  8  9 10]
 [11 12 13 14]]
'''
print(A[1])      #[ 7  8  9 10] 第一行 下标从0开始
print(A[1][1])   #8
print(A[1, 1])   #8
print(A[1, :])   #类似matlab
print(A[:, 1])   #类似matlab
print(A[1, 1:3]) #[8 9]

for row in A:    #默认迭代行
    print(row)
for col in A.T:  #加转置可以迭代列
    print(col)

print(A.flatten())   #把矩阵变成一行
for item in A.flat:  #实现迭代A的每一个元素
    print(item)

5.array的合并

import numpy as np

A = np.array([1, 1, 1])
B = np.array([2, 2, 2])
print(np.vstack((A, B)))  #vetical stack 上下合并 注意多一个括号
print(np.hstack((A, B)))  #horizontal stack 左右合并

#增加维度 向量变矩阵
print(A.shape)
print(A[np.newaxis, :].shape)  #在行方向上加维度 变成(1, 3)
print(A[:, np.newaxis])        #在列方向加维度 变成3x1的矩阵 这样把向量变成列向量

6.array的分割

import numpy as np

A = np.array([[1, 1, 1],
              [2, 2, 2]])
print(np.split(A, 3, axis=1)) #axis=1是竖着切,分成3个相等的部分
print(np.hsplit(A, 3))        #类似

7.拷贝

import numpy as np

a = np.array([[1, 1, 1],
              [2, 2, 2]])
b = a            #类似引用 同时改变
c = a.copy()     #普通赋值 一个改变不影响另一个

二.pandas

1.基本用法

import pandas as pd
import numpy as np

#创建一个一维序列 标签默认从0开始
s = pd.Series([1, 3, 5, np.nan, 44, 1])
print(s)
'''
0     1.0
1     3.0
2     5.0
3     NaN
4    44.0
5     1.0
dtype: float64
'''

#创造日期标签
dates = pd.date_range('20160101', periods=6)
print(dates)

'''
DatetimeIndex(['2016-01-01', '2016-01-02', '2016-01-03', '2016-01-04',
               '2016-01-05', '2016-01-06'],
              dtype='datetime64[ns]', freq='D')
'''

#创建二维矩阵 标签默认从0开始
df1 = pd.DataFrame(np.arange(12).reshape((3, 4)))
print(df1)
'''
   0  1   2   3
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11
'''

#创建二维矩阵 并设置标签
df2 = pd.DataFrame(np.random.rand(6, 4), index=dates, columns=['a', 'b', 'c', 'd'])
print(df2)
'''
                   a         b         c         d
2016-01-01  0.787488  0.513120  0.298277  0.049221
2016-01-02  0.646591  0.031268  0.944913  0.168996
2016-01-03  0.736546  0.191419  0.975171  0.892403
2016-01-04  0.967153  0.524391  0.145268  0.516792
2016-01-05  0.700026  0.558873  0.524348  0.239110
2016-01-06  0.702705  0.152738  0.583090  0.322033
'''

#df2的 各种信息
print(df2.describe())
'''
              a         b         c         d
count  6.000000  6.000000  6.000000  6.000000
mean   0.513089  0.397933  0.543572  0.675607
std    0.316227  0.331969  0.341994  0.270497
min    0.022717  0.015744  0.092303  0.316425
25%    0.382061  0.090406  0.318337  0.455286
50%    0.509325  0.469178  0.532380  0.765810
75%    0.704835  0.657270  0.829911  0.869332
max    0.927524  0.749382  0.928292  0.949981

进程已结束,退出代码为 0

'''

#转置
print(df2.T)

#对标签排序 1是对列排序
print(df2.sort_index(axis=1, ascending=False))
'''
                   d         c         b         a
2016-01-01  0.125248  0.779030  0.233654  0.137977
2016-01-02  0.696297  0.570827  0.256009  0.983322
2016-01-03  0.960166  0.214114  0.440261  0.087298
2016-01-04  0.675118  0.251800  0.554522  0.920476
2016-01-05  0.821534  0.203595  0.536193  0.626046
2016-01-06  0.483608  0.858479  0.012226  0.712910
'''

#某一列
print(df2.sort_values(by = 'b'))
'''
                   a         b         c         d
2016-01-06  0.712910  0.012226  0.858479  0.483608
2016-01-01  0.137977  0.233654  0.779030  0.125248
2016-01-02  0.983322  0.256009  0.570827  0.696297
2016-01-03  0.087298  0.440261  0.214114  0.960166
2016-01-05  0.626046  0.536193  0.203595  0.821534
2016-01-04  0.920476  0.554522  0.251800  0.675118
'''

2. 选择数据

import pandas as pd
import numpy as np

#创建二维矩阵 并设置标签
dates = pd.date_range('20160101', periods=6)
df = pd.DataFrame(np.random.rand(6, 4), index=dates, columns=['a', 'b', 'c', 'd'])
print(df)
'''
                   a         b         c         d
2016-01-01  0.787488  0.513120  0.298277  0.049221
2016-01-02  0.646591  0.031268  0.944913  0.168996
2016-01-03  0.736546  0.191419  0.975171  0.892403
2016-01-04  0.967153  0.524391  0.145268  0.516792
2016-01-05  0.700026  0.558873  0.524348  0.239110
2016-01-06  0.702705  0.152738  0.583090  0.322033
'''

#选择某一列
print(df['b'])
'''
2016-01-01    0.665834
2016-01-02    0.297715
2016-01-03    0.513704
2016-01-04    0.249076
2016-01-05    0.030517
2016-01-06    0.983741
Freq: D, Name: b, dtype: float64
'''

#输出0 1 2行
print(df[0:3])
'''
                   a         b         c         d
2016-01-01  0.013124  0.351912  0.679782  0.192111
2016-01-02  0.175300  0.956146  0.969367  0.488475
2016-01-03  0.503340  0.662137  0.334847  0.012275
'''

#iloc就类似numpy了
print(df.iloc[1])
print(df.iloc[:, 1])
print(df.iloc[1, 2])
print(df.iloc[[1, 3, 5], 1:3])

#和上面类似 只是数字变标签
print(df.loc['2016-01-01'])

#a这一列大于0.15的保留
print(df[df.a > 0.15])
'''
                   a         b         c         d
2016-01-01  0.596506  0.955338  0.196281  0.632468
2016-01-03  0.603334  0.696364  0.886982  0.178019
2016-01-04  0.980567  0.611526  0.534930  0.793968
2016-01-05  0.685185  0.100450  0.728273  0.906942
'''

3. 导入导出

data = pd.read_csv('1.csv')
data.to_csv('2.csv')

三.matpolotlib

1.基本用法

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1, 1, 50)
y = 2 * x + 1
plt.plot(x, y)
plt.show()        #加这句话图才会出来

2.显示多张图片

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1, 1, 50)
y1 = 2 * x + 1
y2 = x ** 2

plt.figure()      #以下的操作针对这一个figure
plt.plot(x, y1)

plt.figure(num = 3, figsize=(8, 5)) #设置编号和大小
plt.plot(x, y1)
plt.plot(x, y2, color = 'red', linewidth = 1.0, linestyle = '--');

plt.show()        #加这句话图才会出来

3. 设置坐标轴

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1, 3, 50)
y1 = 2 * x + 1
y2 = x ** 2

plt.plot(x, y1)
plt.plot(x, y2, color = 'red', linewidth = 1.0, linestyle = '--');

plt.xlim((-1, 2))   #设置坐标轴范围
plt.ylim((-2, 3))
plt.xlabel('I am x') #坐标轴名称
plt.ylabel('I am y')

plt.xticks(np.linspace(-1, 2, 5)) #设置刻度
plt.yticks([-2, 0], [r'$really\ bad$', r'$\alpha$'])

plt.show()        #加这句话图才会出来

4. 设置图例

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1, 3, 50)
y1 = 2 * x + 1
y2 = x ** 2

plt.plot(x, y1, label = 'up')   #plot时要加入label
plt.plot(x, y2, color = 'red', linewidth = 1.0, linestyle = '--', label = 'down');

plt.legend(loc = 'best')  #loc可加可不加 加了就是选择一个没有什么数据的地方放

plt.show()        #加这句话图才会出来

先学到这吧,以后遇到不会的再看视频学。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值