import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
numpy
Numerical Python的简称,高性能科学计算和数据分析的基础包.
Provides the most important data types for econometrics, statistics and numerical analysis.
主要的数据类型是ndarry(数组)he matrix(矩阵)
1 数组array
1.1 创建array
1) np.array(list):由list生成array
2) arange, 直接生成数组的range
ar=np.array([4,5,6])
print(ar)
[4 5 6]
arr1 = np.arange(1,2,0.3) #开始,结束,步长
print(arr1) #数组array和list的差别在于:数组没有逗号
[ 1. 1.3 1.6 1.9]
#创建多维数组
arr=np.array([[1,2,3],[4,5,6]])
arr.shape #shape用来检查数组的维数
(2, 3)
1.2 更改array
yy = np.array(['hh','luu'])
yy[0]=66
print(yy)
[‘66’ ‘luu’]
#验证数组可改
ar=np.array([1,2,3])
ar[0]=9
print(ar)
[9 2 3]
1.3 索引array
Array 的index, slice方法与list类似
myarr=np.array([4,5,6,8,9])
a=myarr[2]
a
6
b=myarr[2:]
b
array([6, 8, 9])
# 循环遍历
for i in myarr:
print(i)
9 2 8 4
1.3 array方法
array可以对数字进行直接的计算。请查看下面方法,了解他们的用途:
arr1.sum()
arr1.std()
arr1.cumsum()
ar=np.array([1,2,3])
print(ar.sum()) #求和
print(ar.std()) #求标准差
print(ar.cumsum()) #累加
print(np.sqrt(ar)) #开平方根
print(np.zeros(10)) #产生10个0
print(a*2)
print(a**2)
6 0.816496580928 [1 3 6] [ 1. 1.41421356 1.73205081] [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] 12 36
#二维转一维
a=np.array([[ 1, [2, 3], 4],
[ 4, 5, 6, 7],
[ 7, 8, 9, 10]])
a.ravel()
array([[1, [2, 3], 4], [4, 5, 6, 7], [7, 8, 9, 10]], dtype=object)
1.4 数组扩展
np.vstack((a, b)): 矩阵的横向合并,增加行数, 把b数据追加到a的下面, 上下连接。
np.hstack((a, b)): 矩阵的纵向合并,增加列数,把a, b左右连接。
a = np.ones((3,3))
b = np.eye(3)
print(a)
print(b)
[[ 1. 1. 1.] [ 1. 1. 1.] [ 1. 1. 1.]] [[ 1. 0. 0.] [ 0. 1. 0.] [ 0. 0. 1.]]
np.vstack((a, b)) #增加行数, 把b数据追加到a的下面, 上下连接。
array([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.], [ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]])
np.hstack((a, b)) #增加列数,把a, b左右连接。
array([[ 1., 1., 1., 1., 0., 0.], [ 1., 1., 1., 0., 1., 0.], [ 1., 1., 1., 0., 0., 1.]])
1.5 与list的小小区别
import numpy as np #as后面给他一个比较短的名字
x = range(6)
lst=list(x)
y = np.array(x)
#区别:list中每个元素乘以2和array中每个元素乘以2
print(lst)
print(lst*2)
print(y)
print(y*2)
type(y)
[0, 1, 2, 3, 4, 5] [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5] [0 1 2 3 4 5] [ 0 2 4 6 8 10] numpy.ndarray
pandas
#生成日期
dates=pd.date_range('20130101',periods=6)
dates
DatetimeIndex([‘2013-01-01’, ‘2013-01-02’, ‘2013-01-03’, ‘2013-01-04’, ‘2013-01-05’, ‘2013-01-06’], dtype=’datetime64[ns]’, freq=’D’)
0 读取文件
Pandas 支持读取多种文本类型文件
pd.read_table() 分隔符是“\t”
pd.read_csv() 分隔符是“,”
师说:推荐使用notepad++,开源
#查看所在路径
import os
print ("%s" % os.getcwd())
/Users/anita/Desktop/python
uni=pd.read_table('/Users/anita/k3.txt')
uni.head(2)
qsrank | schoolname | qsstars | overall | academic | employer | faculty | international | internationalstudents | citations | arts | engineering | life | natural | social | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | Massachusetts Institute of Technology (MIT) | 6.0 | 100.0 | 100.0 | 100.0 | 100.0 | 97.6 | 96.3 | 99.7 | 78.7 | 96.3 | 90.9 | 96.3 | 87.4 |
1 | 2 | Harvard University | 5.0 | 99.2 | 100.0 | 100.0 | 99.3 | 94.1 | 85.3 | 100.0 | 89.7 | 85.7 | 98.2 | 92.3 | 96.3 |
len(uni) #看行数
906
1 生成表格
1)通过numpy生成一个表格
#通过numpy生成6*4表格
df=pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
df
#index:行变量的名字
#column:列变量的名字
A | B | C | D | |
---|---|---|---|---|
2013-01-01 | 0.103744 | 1.371988 | 0.895594 | 0.521574 |
2013-01-02 | -1.678814 | 0.867667 | -0.009334 | -0.207683 |
2013-01-03 | 0.707479 | -0.642475 | -1.061405 | 0.549085 |
2013-01-04 | -0.109912 | 0.795900 | -1.005479 | 0.769081 |
2013-01-05 | -2.608954 | -0.604463 | 0.327128 | 0.589220 |
2013-01-06 | -0.246371 | -0.428427 | -1.313675 | 0.289808 |
2)通过字典创建每一个列变量,从而生成表格
df2 = pd.DataFrame({ 'A' : 1.,
'B' : pd.Timestamp('20130102'),
'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
'D' : np.array([3] * 4,dtype='int32'),
'E' : pd.Categorical(["test","train","test","train"]),
'F' : 'foo' })
df2
A | B | C | D | E | F | |
---|---|---|---|---|---|---|
0 | 1.0 | 2013-01-02 | 1.0 | 3 | test | foo |
1 | 1.0 | 2013-01-02 | 1.0 | 3 | train | foo |
2 | 1.0 | 2013-01-02 | 1.0 | 3 | test | foo |
3 | 1.0 | 2013-01-02 | 1.0 | 3 | train | foo |
2 查看表格
1)查看表的前面几行
df.head(3)
A | B | C | D | |
---|---|---|---|---|
2013-01-01 | 1.432233 | 1.343454 | 0.042238 | 1.786792 |
2013-01-02 | 0.526467 | -0.237635 | -1.246785 | -1.053789 |
2013-01-03 | -1.483537 | -0.151229 | -0.718651 | -0.233156 |
jj=pd.read_table('/Users/anita/k3.txt')
jj.head(2)
qsrank | schoolname | qsstars | overall | academic | employer | faculty | international | internationalstudents | citations | arts | engineering | life | natural | social | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | Massachusetts Institute of Technology (MIT) | 6.0 | 100.0 | 100.0 | 100.0 | 100.0 | 97.6 | 96.3 | 99.7 | 78.7 | 96.3 | 90.9 | 96.3 | 87.4 |
1 | 2 | Harvard University | 5.0 | 99.2 | 100.0 | 100.0 | 99.3 | 94.1 | 85.3 | 100.0 | 89.7 | 85.7 | 98.2 | 92.3 | 96.3 |
2)改变index
#读取时改变index
uu=pd.read_table('/Users/anita/k3.txt',index_col=3)
uu.head(2)
qsrank | schoolname | qsstars | academic | employer | faculty | international | internationalstudents | citations | arts | engineering | life | natural | social | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
overall | ||||||||||||||
100.0 | 1 | Massachusetts Institute of Technology (MIT) | 6.0 | 100.0 | 100.0 | 100.0 | 97.6 | 96.3 | 99.7 | 78.7 | 96.3 | 90.9 | 96.3 | 87.4 |
99.2 | 2 | Harvard University | 5.0 | 100.0 | 100.0 | 99.3 | 94.1 | 85.3 | 100.0 | 89.7 | 85.7 | 98.2 | 92.3 | 96.3 |
uu.index
Float64Index([100.0, 99.2, 99.0, 98.9, 98.8, 98.7, 96.8, 96.5, 96.2, 96.1, … 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], dtype=’float64’, name=’overall’, length=906)
#改变index,这个很重要
uu.set_index('qsstars',inplace=True)
uu.head(