数据分析数据可视化(一)

需要学习的包:
数据处理: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:命令

发布了14 篇原创文章 · 获赞 7 · 访问量 580

猜你喜欢

转载自blog.csdn.net/weixin_45743162/article/details/104546318