数据分析-Pandas基础

关于数据分析

数据分析,宽泛地理解就是对海量数据进行处理、分析等操作,从数据中得到价值。选择这个方向,你可以往数据分析师、数据挖掘、数据产品经理等方向发展。

Pandas

1.Pandas核心数据结构

Pandas是基于NumPy 构建的含有更高级数据结构和分析能力的工具包。在 NumPy 中数据结构是围绕 ndarray 展开的;而Pandas中核心数据结构是Series和DataFrame。

  • Series 是个定长的字典序列,有2个基础属性:index和Values。
import pandas as pd
from pandas import Series, DataFrame
x2 = Series(data=[1,2,3,4], index=['a', 'b', 'c', 'd'])
print (x2)
a    1
b    2
c    3
d    4
dtype: int64
  • DataFrame类型数据结构类似数据库表,它包括了行索引和列索引,我们可以将 DataFrame 看成是由相同索引的 Series 组成的字典类型。
import pandas as pd
from pandas import Series, DataFrame
data = {
   'Chinese': [66, 95, 93, 90,80],'English': [65, 85, 92, 88, 90],'Math': [30, 98, 96, 77, 90]}
df1 = DataFrame(data, index=['zf', 'gy', 'zy', 'hz', 'dw'], columns=['English', 'Math', 'Chinese'])
print (df1)
    English  Math  Chinese
zf       65    30       66
gy       85    98       95
zy       92    96       93
hz       88    77       90
dw       90    90       8

2.Pandas数据的导入导出

Pandas 允许直接从 xlsx,csv 等文件中导入数据,也可以输出到 xlsx, csv 等文件。

# 以excel为例,其它类似
import pandas as pd
df = pd.read_excel('C:/Users/zyf/Desktop/test.xlsx',index_col=0) # 读取导入
print(df)
df.loc['we','math']=12
print(df)
df.to_excel('C:/Users/zyf/Desktop/test1.xlsx') # 导出存储
 chinese  english   math
姓名                         
zz       66        65   NaN
zf       95        85  32.0
we       95        34  56.0
    chinese  english   math
姓名                         
zz       66        65   NaN
zf       95        85  32.0
we       95        34  12.0
index_col=0 就是告诉 Pandas,让它使用第一个 column(学号)的数据当做 row 索引

3.Pandas数据的常用操作

# 后续操作以此作为样例
import pandas as pd
import numpy as np

data = np.arange(-6, 6).reshape((4, 3))
df = pd.DataFrame(
  data, 
  index=list("abcd"), 
  columns=list("ABC"))
print(df)
   A  B  C
a -6 -5 -4
b -3 -2 -1
c  0  1  2
d  3  4  5

3.1 选列Column

df['B']  # 选一列
df[['B','C']] #多列

3.2 选行-loc函数

通过行索引 “Index” 中的具体值来取行数据(如取"Index"为"a"的行)

#loc函数是基于行标签和列标签进行索引的,其基本用法为:DataFrame.loc[行标签,列标签],如下
data[1:2,1:3] # numpy中选取数据
df.loc['b':'c','B':'C'] #DataFrame中使用loc函数选取数据
df.loc[['d', 'b'], :] #选取多行数据

array([[-2, -1]]) #numpy结果
   B  C           #pandas结果
b -2 -1
c  1  2

上述两行代码,pandas为了贴近excel使用原则,得出的结果会包含’c’、'C’对应的数据,而numpy中则是不包含的。

3.3 iloc函数

通过行号来取行数据(如取第二行的数据)。iloc函数可以让我们直接用位置信息来筛选数据(类似numpy的思维)

# iloc函数是基于行和列的位置进行索引的,索引值从0开始,并且得到的结果不包括最后一个位置的值,其基本用法为DataFrame.iloc[行位置,列位置],如下:
data[1:2,1:3] #numpy方式
print(df.iloc[1:2,1:3]) # pandas中iloc函数

3.4 loc与iloc函数的混搭

比如现在需要取第1到第3位数据的A C两组数据,可以采用索引转换的方式

  1. df.indexdf.columns 来调取到全部的标签,然后在用像 Numpy index 索引的方式把这些标签给筛选出来,放到 .loc 里面用
row_lables= df.index[1:3] 
print(df.loc[row_lables,['A','C']])
col_labels = df.columns[[0, 2]] 
print(df.loc[row_labels, col_labels]) # column的labels同理
   A  C
b -3 -1
c  0  2
  1. 通过lable获取对应的index信息
col_index = df.columns.get_indexer(["A", "B"])
print(df.iloc[:2, col_index])

同理,df.index.get_indexer(["a", "b"]) 也可以这样获取到 label 对应的 index 信息。

3.5 条件筛选

df[df['A']<0] # 选取在A中小于0的数据
# 选在第一行数据不小于 -5 的数据
df.loc[:,df.iloc[0]>=-5] # 方式1:采用~,表示非什么
df.loc[:,~(df.iloc[0]<-5)] # 方式2:直接用 >=-5 来筛选

#用或 | 来表示 or 的意思, & 表述 and,选取选在第一行数据不小于 -4 或小于 -5 的数据
i0 = df.iloc[0]
df.loc[:, ~(i0 < -4) | (i0 < -5)]

Series和DataFrame类似,可以参考https://mofanpy.com/tutorials/data-manipulation/pandas/data-selection 后半部分

4.数据清洗

数据清洗一般是为了处理所采集数据的异常值,包括数据缺失、重复值、空行等,相当于数据预处理,使得数据标准、干净、连续,为后续数据分析、挖掘做好准备。

4.1 清洗空值

# 样例,本节以此作为例
import numpy as np
import pandas 
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值