数据分析02_Pandas数据结构

导包三剑客

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

由ndarray创建的是引用,而不是副本。对Series元素的改变也会改变原来的ndarray对象中的元素。(列表没有这种情况)

1.Series

创建

(1)列表创建
Series(value,index)
nd = np.array([0,2,4,6])
s = Series(nd, index = [“A”,“B”,“C”,“D”])
(2)字典创建
s = Series(data = {“a”:10, “pi”:3.14,“e”:2.713,“g”:0.618 }, index = [“a”,“pi”,“e”,“g”,“kk”])

索引

(1)显示
使用index中的元素作为索引值,直接用中括号
s[“e”]
使用.loc[](推荐)
s.loc[“e”]
(2)隐式
使用整数作为索引值

使用.iloc[](推荐)注意,使用iloc进行切片的时候,都是左闭右开的

注意:一个中括号和两个中括号返回的数据是不一样的(重要的)

属性

data.shape
data.size
data.index
data.values

查看样式

pd.read_csv()
head()
tail()

检测空值

pd.isnull()
pd.notnull()

data.isnull()
data.notnull()
返回元素是boolean 类型的值 如果为空的话, 返回True 如果不为空的话, 返回False #注意事项:对于DataFrame而言, 每一列数据其实都是一个Series, 并且都是有name属性的

series运算

(1)适用于numpy的数组运算也适用于Series
(2)Series之间的运算:在运算中自动补齐不同索引的数据;如果索引不对应,则补NAN

2.DataFrame

三类数据:

#结构化数据:例如数据库的数据表, 有行有列
#半结构化数据:比如 xml, json
#非结构化数据:图片, 音频,视频等 二进制流的形式进行读取存储的

DataFrame是一个【表格型】的数据结构,可以看做是【由Series组成的字典】(共用同一个索引)。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。
DataFrame既有行索引,也有列索引。

  • 行索引:index
  • 列索引:columns
  • 值:values(numpy的二维数组)
(1)创建dataframe

最常用的方法是传递一个字典来创建
DataFrame属性:values、columns、index、shape

(2)索引

a.列索引:
可以将DataFrame的列获取为一个Series。返回的Series拥有原DataFrame相同的索引,且name属性也已经设置好了,就是相应的列名。
方式一:类似字典;
方式二:通过属性的方式,取多个的时候采用两个中括号

b.行索引

  • 使用.ix[]来进行行索引
  • 使用.loc[]加index来进行行索引
  • 使用.iloc[]加整数来进行行索引
    同样返回一个Series,index为原来的columns。
    c.对元素索引的方法
  • 使用列索引
  • 使用行索引(iloc[3,1]相当于两个参数;iloc[[3,3]] 里面的[3,3]看做一个参数)
  • 使用values属性(二维numpy数组)
    注意: 直接用中括号时:
    索引表示的是列索引
    切片表示的是行切片

(3)运算

a.dataframe运算
同Series一样:
在运算中自动对齐不同索引的数据
如果索引不对应,则补NaN;两个DataFrame进行相加的时候,axis是不起作用的
b.Series与DataFrame之间的运算
使用Python操作符:以行为单位操作(参数必须是行),对所有行都有效。(类似于numpy中二维数组与一维数组的运算,但可能出现NaN)

使用pandas操作函数:

axis=0:以列为单位操作(参数必须是列),对所有列都有效。
axis=1:以行为单位操作(参数必须是行),对所有行都有效。

发布了388 篇原创文章 · 获赞 71 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/ZZQHELLO2018/article/details/103945124