- # 数据分析的基础步骤:数据收集,数据处理,数据分析,数据展现
- # numpy的安装 pip install numpy
- # pandas的安装 pip install pandas
- # Matplotlib的安装:pip install matplotlib
- #
- # jupeter notebook是ipython的升级版 一个Web应用程序 界面更友好 功能也更强大。
- # 可创建和共享代码 数据清洗和转换 数值模拟 统计建模 机器学习等等
- # jupyter notebook的安装 pip install jupyter
- # 启动jupyter notebook
- # 数据加载np.genfromtxt
- importnumpyasnp
filename ="./presidential_polls.csv"
data_arr = np.genfromtxt(filename,#需要打开的文件名
delimiter =",",#文件的分隔符
dtype=str,#数据按字符串格式存储,不进行bytes编码
usecols = (3,17,18,19),#表示读取文件里列索引位置
)
print(data_arr)- # 数据存储np.loadtxt
filename ="./presidential_polls.csv"
data_arr = np.loadtxt(filename,#需要打开的文件名
delimiter =",",#文件的分隔符
#skiprows = 1, #可以选择调过开头指定的行
dtype=str,#数据是按编码后的字符串格式存储
usecols = (3,17,18,19),#表示读取文件里的列的索引位置)
1、numpy数组的创建
- # 随机抽样生成数组范围[0, 1)
arr1 = np.random.rand(2,3,4)
print(arr1)
print(type(arr1))
[[[0.575744860.546466360.88266990.18578644]
[0.985875930.798600980.335100050.63357311]
[0.572295830.789853570.945513670.50121632]]
[[0.546928740.931985960.275217560.77860668]
[0.727242990.298295410.969954120.01535601]
[0.857145440.471165520.771563230.51256554]]]
<class 'numpy.ndarray'>
- # 随机从标准正太分布中返回一个或多个样本值
arr2 = np.random.randn(2,3,4)
print(arr2)
print(type(arr2))
[[[-0.23396039-0.23336667-0.30112823-1.23415798]
[0.915582450.124148810.15081818-1.53843735]
[-0.216205940.73599210.500929330.75558742]]
[[0.325301120.735253830.372192340.21443457]
[0.017527222.44692182-0.69826485-0.51774681]
[0.463233290.50842233-0.81426621-1.12823969]]]
<class 'numpy.ndarray'>
- # 随机从指定范围中创建对位整型数据
arr3 = np.random.randint(-1,5, (3,4))- # arr3 = np.random.randint(-1, 5, size=(3, 4))
print(arr3)
print(type(arr3))
[[2024]
[-10-14]
[2323]]
<class 'numpy.ndarray'>
- # 生成指定维度大小(3行4列)的随机多维浮点型数据
arr4 = np.random.uniform(-1,5, (3,4))
print(arr4)
print(type(arr4))- # ndarray的属性
- # 维度个数, 一维 二维 三维
print(arr4.ndim)- # 维度大小(3, 4)
print(arr4.shape)- # 数组里的数据类型 float64
print(arr4.dtype)
[[3.558921552.191496054.843166894.74206393]
[2.118436470.263808230.780193153.38043045]
[3.390629114.271113340.632425280.42685677]]
<class 'numpy.ndarray'>
2
(3, 4)
float64
- # 自定义数组创建
lis = range(5)
arr5 = np.array(lis)
print(arr5)
print(np.array([range(5), range(5)]))
print(np.array([(1,2), (3,4)]))
print(np.array([[1,2], [3,4]]))
[01234]
[[01234]
[01234]]
[[12]
[34]]
[[12]
[34]]
- # 指定大小的全0数组 第一个参数是元组 默认数据类型为float64
zeros_arr = np.zeros((3,4), dtype='int32')
print(zeros_arr)- # 运行结果:int32
print(zeros_arr.dtype)
[[0000]
[0000]
[0000]]
int32
- # 指定大小的全1数组 第一个参数是元组 默认数据类型为float64
ones_arr = np.ones((2,3))
print(ones_arr)
print(ones_arr.dtype)
[[1.1.1.]
[1.1.1.]]
float64
- # 指定大小的全1数组 第一个参数是元组 默认数据类型为float64
empty_arr = np.empty((3,3), int)# 指定数据类型为int
print(empty_arr)- # 运行结果:int32
print(empty_arr.dtype)
- [[0 0 0]
- [0 0 0]
- [0 0 0]]
- int32
arr6 = np.arange(6)
arr7 = np.arange(6).reshape(2,3)- # 1x6个元素的一维数组
print(arr6)- # 2x3个元素的 二维数组
print(arr7)
[012345]
[[012]
[345]]
2、
- importnumpyasnp
- # 一维数组的索引与切片 和列表的操作类似
arr1 = np.arange(10)
print(arr1[2:5])# <class 'numpy.ndarray'>
print(type(arr1[2:5]))# [2 3 4]
print(arr1[1])
print(type(arr1[1]))# <class 'numpy.int32'>
[234]
<class 'numpy.ndarray'>
1
<class 'numpy.int32'>
- # 多维数组的索引与切片
arr2 = np.arange(12).reshape(3,4)
print(arr2)
print(arr2[2][3])# 索引为(2, 3)的数据
print(arr2[1])# 索引为1的行 [4 5 6 7]
print(arr2[0:2,2:])# 索引为0 1的行和 索引为2-的交叉部分
print(arr2[:,1:3])# 索引为1 2的列
[[0123]
[4567]
[891011]]- 11
[4567]
[[23]
[67]]
[[12]
[56]
[910]]
- # 条件索引 找出 data_arr 中 2005年后的数据
data_arr = np.random.rand(3,3)
print(data_arr)
year_arr = np.array([[2000,2001,2000], [2005,2002,2009], [2001,2003,2010]])
is_year_after_2005 = year_arr >=2005- # 返回的是一个3x3的数组 值时bool型 >=2005的索引位置是True 其他的是False
print(is_year_after_2005, is_year_after_2005.dtype)- # 提取is_year_after_2005是True的索引在data_arr中对应的值
print(data_arr[is_year_after_2005])- # 找出 data_arr中2005年前且年份能整除二的年份和数据
filtered_arr1 = year_arr[(year_arr <=2005) | (year_arr %2==0)]
print(filtered_arr1)
print(data_arr[(year_arr <=2005) | (year_arr %2==0)])- # print(data_arr[filtered_arr1])
- # 找出 data_arr中2005年前或年份能整除二的年份和数据
filtered_arr2 = year_arr[(year_arr <=2005) & (year_arr %2==0)]
print(filtered_arr2)
print(data_arr[(year_arr <=2005) & (year_arr %2==0)])
[[0.739531950.613485840.79242628]
[0.521460430.366600390.20184571]
[0.70447230.926533720.07748207]]
[[FalseFalseFalse]
[TrueFalseTrue]
[FalseFalseTrue]] bool
[0.521460430.201845710.07748207]
[20002001200020052002200120032010]
[0.739531950.613485840.792426280.521460430.366600390.7044723- 0.926533720.07748207]
[200020002002]
[0.739531950.792426280.36660039]
3、
- importnumpyasnp
- # 元素计算函数
arr = np.random.randn(2,3)
print(arr)
print(np.ceil(arr))# arr的所有元素向上区镇
print(np.floor(arr))# arr的所有元素向下取整
print(np.rint(arr))# arr的所有元素四舍五入
print(np.isnan(arr))# 判断元素是否为 NaN(Not a Number)
print(np.multiply(arr, arr))# arr对应元素相乘
print(np.divide(arr, arr))# arr对应元素相除
print(np.where(arr >0,1,-1))# arr中元素大于0为1小于0为-1
[[-2.06506175-0.502804081.45255375]
[1.33348679-0.74924210.90596497]]
[[-2.-0.2.]
[2.-0.1.]]
[[-3.-1.1.]
[1.-1.0.]]
[[-2.-1.1.]
[1.-1.1.]]
[[FalseFalseFalse]
[FalseFalseFalse]]
[[4.264480020.252811952.10991241]
[1.778187010.561363720.82077252]]
[[1.1.1.]
[1.1.1.]]
[[-1-11]
[1-11]]
- # 元素统计函数
arr = np.arange(1,13).reshape(3,4)- print(arr)
- print(np.sum(arr))# 所有元素的和
- print(np.sum(arr, axis=0))# 数组的按列统计和
- print(np.sum(arr, axis=1))# 数组的按行统计和
- print(np.cumsum(arr))# 返回一个一维数组 每个元素都是之前所有元素的 累加和
- print(np.cumprod(arr))# 返回一个一维数组 数组的每一个元素都是之前所有元素的累加积
[[1234]
[5678]
[9101112]]- 78
[15182124]
[102642]
[136101521283645556678]
[126241207205040
40320362880362880039916800479001600]
arr = np.random.randint(0,10, (3,4))
print(arr)- # 所有元素的平均值与和
print(np.mean(arr))
print(np.sum(arr))
print(np.max(arr))# 求数组的最大值
print(np.min(arr))# 求数组的最小值
print(np.var(arr))# 求方差
print(np.std(arr))# 求标准差:方差的平方根
[[3672]
[4432]
[8594]]- 4.75
- 57
- 9
- 2
- 4.854166666666667
- 2.203217344400381
- # 求最大值和最小值的索引下标 如果是多维数组 将多维数组合并成一维数组 再找出最大值索引下标
arr = np.random.randint(0,10, (3,4))
print(arr)
print(np.argmax(arr))
print(np.argmin(arr))
[[5212]
[0613]
[5416]]- 5
- 4
- # 元素判断函数
arr = np.random.randn(2,3)
print(arr)
print(np.any(arr >0))# 至少有一个元素满足指定条件 返回True
print(np.all(arr >0))# 所有的元素满足指定条件 返回True- # 元素判断函数
arr = np.array([[1,2,1], [2,3,4]])
print(arr)
print(np.unique(arr))# 找到唯一值并返回排序结果 类似于Python的set集合
[[0.462157570.640093620.26844304]
[-1.171991750.62900237-0.41159536]]- True
- False
[[121]
[234]]
[1234]
更多免费技术资料可关注:annalin1203