数据分析2

### 为什么学习pandas
- numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢?
    - numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类型的数据(字符串,时间序列),那么pandas就可以帮我们很好的处理除了数值型的其他数据!

### 什么是pandas?
- 首先先来认识pandas中的两个常用的类
    - Series
    - DataFrame

### Series
- Series是一种类似与一维数组的对象,由下面两个部分组成:
    - values:一组数据(ndarray类型)
    - index:相关的数据索引标签

- Series的创建
    - 由列表或numpy数组创建
    - 由字典创建

from pandas import Series
s = Series(data=[1,2,3,'four'])
s

import numpy as np
s = Series(data=np.random.randint(0,100,size=(3,)))
s

#index用来指定显示索引
s = Series(data=[1,2,3,'four'],index=['a','b','c','d'])
s

#为什么需要有显示索引
# 显示索引可以增强Series的可读性

dic = {
    '语文':100,
    '数学':99,
    '理综':250
}
s = Series(data=dic)
s

- Series的索引和切片

s[0]
s.语文
s[0:2]

- Series的常用属性
    - shape
    - size
    - index
    - values

s.shape
s.size
s.index #返回索引
s.values #返回值
s.dtype #元素的类型

s = Series(data=[1,2,3,'four'],index=['a','b','c','d'])
s.dtype #数据类型O表示的是Object(字符串类型)

- Series的常用方法
    - head(),tail()
    - unique()
    - isnull(),notnull()
    - add() sub() mul() div() 

s = Series(data=np.random.randint(60,100,size=(10,)))
s.head(3) #显示前n个数据

s.tail(3) #显示后n个元素

s.unique() #去重

s.isnull() #用于判断每一个元素是否为空,为空返回True,否则返回False

s.notnull()

- Series的算术运算
    - 法则:索引一致的元素进行算数运算否则补空

s1 = Series(data=[1,2,3],index=['a','b','c'])
s2 = Series(data=[1,2,3],index=['a','d','c'])
s = s1 + s2
s

s.isnull()

### DataFrame
- DataFrame是一个【表格型】的数据结构。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。
    - 行索引:index
    - 列索引:columns
    - 值:values

- DataFrame的创建
    - ndarray创建
    - 字典创建

from pandas import DataFrame

df = DataFrame(data=[[1,2,3],[4,5,6]])
df

df = DataFrame(data=np.random.randint(0,100,size=(6,4)))
df

dic = {
    'name':['zhangsan','lisi','wanglaowu'],
    'salary':[1000,2000,3000]
}
df = DataFrame(data=dic,index=['a','b','c'])
df

- DataFrame的属性
    - values、columns、index、shape

df.values
df.columns
df.index
df.shape

============================================

练习4:

根据以下考试成绩表,创建一个DataFrame,命名为df:

    张三  李四  
语文 150  0
数学 150  0
英语 150  0
理综 300  0


============================================

dic = {
    '张三':[150,150,150,150],
    '李四':[0,0,0,0]
}
df = DataFrame(data=dic,index=['语文','数学','英语','理综'])
df

- DataFrame索引操作
    - 对行进行索引
    - 队列进行索引
    - 对元素进行索引

df = DataFrame(data=np.random.randint(60,100,size=(8,4)),columns=['a','b','c','d'])
df

df['a'] #取单列,如果df有显示的索引,通过索引机制去行或者列的时候只可以使用显示索引

df[['a','c']] #取多列

- iloc:
    - 通过隐式索引取行
- loc:
    - 通过显示索引取行

#取单行
df.loc[0]

#取多行
df.iloc[[0,3,5]]

#取单个元素
df.iloc[0,2]
df.loc[0,'a']

#取多个元素
df.iloc[[1,3,5],2]

- DataFrame的切片操作
    - 对行进行切片
    - 对列进行切片
    

#切行
df[0:2]

#切列
df.iloc[:,0:2]

- df索引和切片操作
    - 索引:
        - df[col]:取列
        - df.loc[index]:取行
        - df.iloc[index,col]:取元素
    - 切片:
        - df[index1:index3]:切行
        - df.iloc[:,col1:col3]:切列

- DataFrame的运算
    - 同Series

============================================

练习:

1. 假设ddd是期中考试成绩,ddd2是期末考试成绩,请自由创建ddd2,并将其与ddd相加,求期中期末平均值。

2. 假设张三期中考试数学被发现作弊,要记为0分,如何实现?

3. 李四因为举报张三作弊立功,期中考试所有科目加100分,如何实现?

4. 后来老师发现有一道题出错了,为了安抚学生情绪,给每位学生每个科目都加10分,如何实现?

============================================

dic = {
    '张三':[150,150,150,150],
    '李四':[0,0,0,0]
}
df = DataFrame(data=dic,index=['语文','数学','英语','理综'])
qizhong = df
qimo = df

(qizhong + qizhong) / 2 #期中期末的平均值

qizhong.loc['数学','张三'] = 0
qizhong #将张三的数学成绩修改为0

#将李四的所有成绩+100
qizhong['李四']+=100
qizhong

qizhong += 10
qizhong #将所有学生的成绩+10

- 时间数据类型的转换
    - pd.to_datetime(col)
- 将某一列设置为行索引
    - df.set_index()

dic = {
    'time':['2010-10-10','2011-11-20','2020-01-10'],
    'temp':[33,31,30]
}
df = DataFrame(data=dic)
df

#查看time列的类型
df['time'].dtype

import pandas as pd

#将time列的数据类型转换成时间序列类型
df['time'] = pd.to_datetime(df['time'])
df

df['time']

#将time列作为源数据的行索引
df.set_index('time',inplace=True)

df
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值