python数据分析学习笔记

一、numpy

1、ndarray:

import numpy as np
data = np.random.randn(2, 3) #随机生成2 * 3的数组
print(data.shape) #输出维度
print(data.dtype) #输出数据类型,默认float64

2、生成ndarray:

import numpy as np
data1 = [[6, 4.5, 5, 2],[2, 4.5, 4, 0]]
arr1 = np.array(data1) #接收任意序列对象,生成一个新的numpy数组
print(arr1)
print(arr1.ndim) #输出维数,嵌套了二层

print(np.zeros(8)) #创建全0一维数组
print(np.ones((3, 4)))#创建全1二维数组, 3 * 4
print(np.empty((2, 3 ,2))) #创建没有初始化的3维数组 ,2 * 3 * 2

print(np.arange(20)) #range数组版,返回一个指定范围的数组序列

3、numpy数组可以实现无需for循环的批量操作,也就是向量化。任何两个等尺寸数组之间的算术操作都应用了逐元素操作的方式。ex:两个数组可以按照逐元素进行各种运算。

arr1 = np.array([[2, 3, 4], [5, 3, 9]])
arr2 = np.array([[2, 3, 4], [5, 3, 9]])
arr3 = arr1 ** 2
arr4 = arr1 * arr2

4、索引和切片:

主要是对多维数组的切片操作。之前文章有已有分析。例如:

arr1 = np.array([[[2, 3, 4], [5, 3, 9]], [[2, 3, 4], [5, 3, 9]]])
print(arr1[0, 1])  # [5 3 9]
print(arr1[0, 1, 2]) #9
print(arr1[0, 1, 1:3]) #[3 9]

[a, b, c, ....] 切片符第一个a表示多维数组第一层选择范围, b表示第二层, 以此类推。

5、reshape方法。把数组调整为指定的维数。

arr = np.arange(32).reshape((8, 4)) #生成一个32长度的一维数组,调整为8 * 4的数组
print(arr)

输出:

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]
 [16 17 18 19]
 [20 21 22 23]
 [24 25 26 27]
 [28 29 30 31]]

6、转置和换轴:

arr.T #转置

np.dot(arr1, arr2) #计算两个矩阵内积,等价于arr1.dot(arr2)

arr1 * arr2 :计算两个矩阵逐元素乘积

7、

二、pandas

1、Series数组:一种包含索引和值的数组序列,也可以看成是一种字典。

(1)基本创建

import pandas as pd
obj = pd.Series([1,2 ,3])  #定义一个数组,默认采用0开始的序号
print(obj)
obj2 = pd.Series([4, 7, -5, 3], index=['d', 'b', 'c', 'a']) #定义一个数组,并且定义了其索引
print(obj2)

输出:索引和值以及类型

0    1
1    2
2    3
dtype: int64
d    4
b    7
c   -5
a    3
dtype: int64

(2)使用字典生成Series

import pandas as pd
sdata = {'a':"dfdf", 'b':"dfdd", 'c':"dffsf"}
obj3 = pd.Series(sdata)
print(obj3)

输出:

a     dfdf
b     dfdd
c    dffsf
dtype: object

(3)索引可以使用index属性重新定义,会对应改变为定义后的样子

import pandas as pd
sdata = {'a':"dfdf", 'b':"dfdd", 'c':"dffsf"}
obj3 = pd.Series(sdata)
obj3.index = ['1', '2', '3']

2、DataFrame矩阵的数据表

本身是二维的,但是可以采用分层(嵌套)索引的方式实现更高维数的数据。

最常用的创建方式是利用包含等长度列表或Numpy数组的字典形成DataFrame。

如:

import pandas as pd
data = {'state':['ds', 'fd', 'dfkf'], 'year':['fdfd', 'djkf', 'fdds'], 'pop':['fss', 'fdsfs', '333']}
frame = pd.DataFrame(data)
print(frame)

输出:

  state  year    pop   #列名就是原字典的key,行号是自动索引生成的
0    ds  fdfd    fss
1    fd  djkf  fdsfs
2  dfkf  fdds    333

3、重建索引:reindex

(1)serires调用reindex方法时,会将数据按照新的索引进行排列,如果某个索引之前并不存在,则会引入缺省值NaN。

>>> obj = pd.Series([4.5, 3.4, 1.2], index=['d', 'a', 'c'])
>>> obj
d    4.5
a    3.4
c    1.2

>>> obj2 = obj.reindex(['a', 'f', 'g', 'h'])
>>> obj2
a    3.4
f    NaN
g    NaN
h    NaN
dtype: float64

(2)轴向上删除条目

>> obj3 = obj.drop('a')

发布了49 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/figo8875/article/details/97641974