需要学习的包:
数据处理:pandas
数据计算:Numpy
数据可视化:matplotlib
下载anaconda个人主要使用spyder
1.简单的函数
```python
# -*- coding: utf-8 -*-
"""
Created on Tue Feb 25 21:20:28 2020
@author: 13056
"""
#切片
s="abcderfwadfeg"
print(s[1:9])
#得到bcderfwa从下标一到下标9
print(s[-10:-1])
#得到derfwadfe从倒数第11个到倒数第1个
#等于倒着数的下标也从0开始
#检测开头和结尾
filename='asdf.txt'
print(filename.startswith('.txt'))
#看开头
print(filename.endswith('.txt'))
#看结尾
#得到True或者False
#查找是否有值
a="1234"
print(a.find("23"))
#返回1就是True
#正则函数
import re
b='fwafefgegger'
b=str(b)
print(re.findall('fefge',b,flags=re.IGNORECASE))
#找到['fefge']
#搜索和替换
text="ok hello my nw"
text.replace('hello','hi')
#输出'ok hi my nw'
#忽略大小写的替换
text="HI oook"
print(re.sub('hi','my',text,flags=re.IGNORECASE))
#输出my oook
#合并拼接字符串
b=['i','have','a','apple']
print(' '.join(b))
#输出i have a apple是一个字符串‘ ’里面是用什么连起来
大家对元组,字典,列表的一些函数如果不熟悉我可以给大家补上。
2.Pandas中的数据结构
Series(系列):是用于存储一行或者一列的数据,以及与之相关的索引的集合。
```python
```python
#首先咱们导入包
from pandas import Series
#定义,可以混合定义
x=Series(['a',True,1],index=['first','second','third'])
#索引 值
#first a
#second True
#third 1
#dtype: object
y=Series(['a',True,1])
#如果没写索引默认从0开始,12345。。。
#0 a
#1 True
#2 1
#dtype: object
x['first']
#通过索引访问
x[0]
#通过下标访问
#添加
x=x.append(y)
#必须用原序列接收才行
#定位获取
x=x[[0,3,2]]
#first a
#0 a
#third 1
#dtype: object
#得到相应下标的数据,常用于随机抽样。
#删除
#定位删除
#根据索引删除,索引为third删除
x=x.dorp('third')
#根据下标删除,下标位3的删除
x=x.drop(x.index[3])
#根据值删除,不等于2的删除
x=x['2'!=x.values]
(2)DataFrame数据框:实用于储存多行和多列的数据集合
#首先咱们导入包
from pandas import DataFrame
#建立一个带索引的数据框
data=DataFrame(data={
'id':[1,2,3],
'name':['join','mike','hero']
},
index=['first','second','third']
)
#可以得到数据框
# id name
#first 1 join
#second 2 mike
#third 3 hero
#按列查找
print(data['id'])
#first 1
#second 2
#third 3
#Name: id, dtype: int64
#按行访问
print(data[1:3])
# id name
#second 2 mike
#third 3 hero
#按行列号进行访问
print(data.iloc[0:2,0:1])
# id
#first 1
#second 2
#按行号 列名访问
print(data.at['first','name'])
#join at后面是索引+列名
#修改列名
data.columns=['idd','name2']
print(data)
# idd name2
#first 1 join
#second 2 mike
#third 3 hero
#改名成功
#修改行索引
data.index=range(1,4)
print(data)
# idd name2
#1 1 join
#2 2 mike
#3 3 hero
#修改索引成功
#根据索引删除
data=data.drop(1,axis=1)
#根据列名删除
data=data.drop('name2',axis=1)
print(data)
# idd
#1 1
#2 2
#3 3
#删除成功
#第二种删除的方法
del data['name2']
#增加一行的方法
data.loc[len(data)+1]={24,"Amy"}
print(data)
df=pandas.DataFrame(data={'id':['001','002','003'],
'name':['mike','join','amy']
})
df.reindex(['0','1','2','3'])
#重新构建一个4行的表格
# id name
#0 NaN NaN
#1 NaN NaN
#2 NaN NaN
#3 NaN NaN
df.reindex(['0','1','2','3'],fill_value=0)
# id name
#0 0 0
#1 0 0
#2 0 0
#3 0 0
#重新构建一个4行的表格
#ffill向后填充,bfill向前填充
df.reindex(['0','1','2','3'],method='bfill')
3.numpy函数
import numpy
#导入包
data=numpy.arange(0.1,0.3,0.01)
#得到一个矩阵,是一个等差数列
#[0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23
#0.24 0.25 0.26 0.27 0.28 0.29]
#函数式向量化运算,看data的2次方
print(numpy.power(data,2))
#[0.01 0.0121 0.0144 0.0169 0.0196 0.0225 0.0256 0.0289 0.0324 0.0361
# 0.04 0.0441 0.0484 0.0529 0.0576 0.0625 0.0676 0.0729 0.0784 0.0841]
print(data[data>0.2])
#可以当作过滤用
#[0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29]
#矩阵运算
print(numpy.dot(data,data.T))
#得数0.8269999999999995
#apply用在循环里
from pandas import DataFrame
data1=DataFrame(data={
'data1':numpy.random.randn(5),
'data2':numpy.random.randn(5)
}
)
print(data1.apply(lambda x:min(x)))
#data1 -1.244329
#data2 -1.227594
#得到最小值
print(data1.apply(lambda x:min(x),axis=1))
#0 -1.244329
#1 1.112316
#2 0.209478
#3 -0.332220
#4 -1.227594
#dtype: float64
#得到行的最小值
#对每一行进行判断
print(data1.apply(lambda x:numpy.all(x>0),axis=1))
#0 False
#1 True
#2 True
#3 False
#4 False
#dtype: bool
#过滤
data1=data1[data1.apply(lambda x:numpy.all(x>0),axis=1)]
print(data1)
# data1 data2
#1 1.112316 3.455548
#2 0.292658 0.209478
追加知识:匿名函数:
lambad [arg1,arg2,…argn]:expression
arg参数
expression:命令