Pandas基础

这篇博客介绍了NumPy的数组操作,包括创建、更改、索引和数组扩展,并详细讲解了Pandas如何读取文件、生成表格、查看及操作表格数据,以及索引和选择数据的方法。同时,提到了Pandas与list的区别以及matplotlib.pyplot用于数据可视化的功能。
摘要由CSDN通过智能技术生成
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(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值