'''数组与pandas模块'''

# numpy模块:用来做数据分析,对numpy数组(既有行又有列)--矩阵进行科学运算

# tensorflow/pytorch(数学专业/物理专业/计科专业硕士及以上,kaggle 10-15%(清华/北大/浙大)/acm 1-2等奖/ 天池5%)模块:用来做数据分析,对tensor数组(既有行又有列还有层。。。-三维以上)-- 张量进行科学运算

lt1 = [1, 2, 3]  # n个元素
lt2 = [4, 5, 6] lt = []
for i in range(len(lt1)): # O(n)
lt.append(lt1[i] * lt2[i]) print(lt) import numpy as np # 约定俗成的 arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(arr1 * arr2) # gpu --> 图形显卡 # 创建numpy数组 --> 可变 # 一维数组(不在讨论范围内)
arr = np.array([1, 2, 4])
print(type(arr), arr) # 二维数组(******)
arr = np.array([
[1, 2, 3],
[4, 5, 6]
])
print(arr) # 三维数组(不在讨论范围内)--》tensorflow
arr3 = np.array([
[[1, 2, 3],
[4, 5, 6]],
[[1, 2, 3],
[4, 5, 6]],
])
print(arr) # numpy数组的属性 arr = np.array([
[1, 2, 3],
[4, 5, 6]
]) # T 数组的转置(对高维数组而言) --> 行列互换,转置
print(arr, '\n', arr.T) # dtype 数组元素的数据类型,numpy数组是属于python解释器的;int32/float64属于numpy的
print(arr.dtype)
'''
# 定制化的科学计算机
11111111111111111111111111111111111111111
'''
# size 数组元素的个数
print(arr.size)
# ndim 数组的维数
print(arr.ndim)
print(arr3.ndim)
# shape 数组的维度大小(以元组形式)
print(arr.shape[0])
print(arr.shape[1])
# astype 类型转换
arr = arr.astype(np.float64)
print(arr) # 切片numpy数组
lt = [1, 2, 3] print(lt[:]) arr = np.array([
[1, 2, 3],
[4, 5, 6]
]) print(arr[:, :]) # 行,列 print(arr[0, 0]) print(arr[0, :]) print(arr[:, -2:]) # 逻辑取值
print(arr[arr > 4]) # 赋值
lt = [1, 2, 3] lt[:] = [0, 0, 0]
print(lt) arr = np.array([
[1, 2, 3],
[4, 5, 6]
]) arr[0, 0] = 0
print(arr) arr[0, :] = 0
print(arr) arr[:, :] = 0
print(arr) # 数组的合并 arr1 = np.array([
[1, 2, 3],
[4, 5, 6]
]) arr2 = np.array([
[7, 8, 9],
['a', 'b', 'c']
]) print(np.hstack((arr1, arr2))) # 只能放元组 print(np.vstack((arr1, arr2))) print(np.concatenate((arr1, arr2), axis=1)) # 默认以列合并 # 0表示列,1表示行 # 通过函数创建numpy数组 print(np.ones((2, 3))) print(np.zeros((2, 3))) print(np.eye(3, 3)) print(np.linspace(1, 100, 10)) print(np.arange(2, 10)) arr1 = np.zeros((1, 12))
print(arr1.reshape((3, 4))) # 重构形状 # numpy数组运算 # +-*'
arr1 = np.ones((3, 4)) * 4
print(arr1) # numpy数组运算函数 print(np.sin(arr1)) # 矩阵运算--点乘 arr1 = np.array([
[1, 2, 3],
[4, 5, 6]
]) arr2 = np.array([
[1, 2],
[4, 5],
[6, 7]
])
# 2* 3 3*2
print(np.dot(arr1, arr2)) # 求逆
arr = np.array([[1, 2, 3], [4, 5, 6], [9, 8, 9]])
print(np.linalg.inv(arr)) # numpy数组数学和统计方法
print(np.sum(arr[0, :])) # numpy.random生成随机数(******)
print(np.random.rand(3, 4)) print(np.random.random((3, 4))) # np.random.seed(1)
print(np.random.random((3, 4))) s = np.random.RandomState(1)
print(s.random((3, 4))) arr = np.array([[1, 2, 3], [4, 5, 6], [9, 8, 9]])
np.random.shuffle(arr)
print(arr) # 针对一维
print(np.random.choice([1, 2, 3], 1)) # 针对某一个范围
print(np.random.randint(1, 100, (3, 4))) # 以上只是基础中的基础,入门都还没达到 《利用python进行数据分析》 # sklearn会对numpy封装
# pandas模块:操作excel/json/sql/ini/csv(配置文件)/ # import pandas as pd
#
# df = pd.read_csv('test.csv',header=None)
# df.to_excel('test.xls') # pd从excel中读取 DataFrame数据类型
import numpy as np
import pandas as pd np.random.seed(10) index = pd.date_range('2019-01-01', periods=6, freq='M')
print(index)
columns = ['c1', 'c2', 'c3', 'c4']
print(columns)
val = np.random.randn(6, 4)
print(val) df = pd.DataFrame(index=index, columns=columns, data=val)
print(df) # 保存文件,读出成文件
df.to_excel('date_c.xlsx') # 读出文件
df = pd.read_excel('date_c.xlsx', index_col=[0])
print(df) print(df.index)
print(df.columns)
print(df.values) print(df[['c1', 'c2']]) # 按照index取值
# print(df['2019-01-31'])
print(df.loc['2019-01-31'])
print(df.loc['2019-01-31':'2019-05-31']) # 按照values取值
print(df)
print(df.iloc[0, 0]) df.iloc[0, :] = 0
print(df)
05-22 11:41