栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Pandas初识

Pandas初识

pandas简单介绍
  • 1. Series
  • 2. Dataframe
  • 3. 读取csv
  • 4. 数据操作
    • 4.1 排序
    • 4.2 删除
    • 4.3 基本运算
    • 4.4 去重
  • 5. 层次化索引

pandas是为解决数据分析任务而创建的

from pandas import Series,Dataframe
import pandas as pd
  • Series: 一维数组,类似于Python中的基本数据结构list,区别是Series只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。就像数据库中的列数据;
  • Dataframe: 二维的表格型数据结构。很多功能与R中的data.frame类似。可以将Dataframe理解为Series的容器;
  • Panel:三维的数组,可以理解为Dataframe的容器。
1. Series
obj=Series([4,7,-5,3])
Out:
0 4
1 7
2 -5
3 3
'''
Series的交互式显示的字符串表示形式是索引在左边,值在右边。因为我们没有给数据指定索引,一个包含整数0到N-1这里N是数据的长度)的默认索引被创建。你可以分别的通过它的values和index属性来获取 Series的数组表示和索引对象:
'''
obj.values # [4,7,-5,3]
obj.index # [0,1,2,3]
# 创建series对象
obj2=Series([4,7,-5,3],index=['d','b','a','c'])
Out:
d 4
b 7
a -5
c 3

# 可以传进来字典然后创建series
In [7]:sdata={'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}
In [8]:obj3=Series(sdata)
In [9]:obj3
Out[9]:
Ohio   35000
Texas  71000
Oregon 16000
Utah   5000

2. Dataframe

Dataframe既有行索引还有列索引,它有一组有序的列,每列既可以是不同类型(数值、字符串、布尔型)的数据,或者可以看做由Series组成的字典。

dictionary = {'state': ['0hio', '0hio', '0hio', 'Nevada', 'Nevada'],
              'year': [2000, 2001, 2002, 2001, 2002],
              'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = Dataframe(dictionary)  # 创建dataframe
frame = Dataframe(dictionary, index=['one', 'two', 'three', 'four', 'five'])  # 修改行名
frame['add'] = [0, 0, 0, 0, 0]  # 添加一列
value = Series([1, 3, 1, 4, 6, 8], index=[0, 1, 2, 3, 4, 5])
frame['add1'] = value  # 添加series类型
print(frame)

这里添加series没有添加上…原因还在寻找中…


3. 读取csv
# 如果数据集中有中文的话,最好在里面加上 encoding = 'gbk' ,以避免乱码问题。后面的导出数据的时候也一样  header 关键字告诉Pandas哪些是数据的列名。如果没有列名的话就将它设定为 None。
df = pd.read_csv('uk_rain_2014.csv', header=0)

df.head(5) # 查看前5行
df.tail(5) # 查看后5行
len(df) # 总行数

df.columns = ['','',..] # 修改列名

4. 数据操作 4.1 排序

Series,Dataframe用sort_index()按索引排序,sort_values()按值排序;

obj = Series(range(4), index=['d','a','b','c'])
obj.sort_index()  
Out[74]: 
a    1
b    2
c    3
d    0
dtype: int64

frame = Dataframe(np.arange(8).reshape((2,4)),index=['three', 'one'],columns=['d','a','b','c'])
Out: 
       d  a  b  c
three  0  1  2  3
one    4  5  6  7

frame.sort_index()
Out: 
       d  a  b  c
one    4  5  6  7
three  0  1  2  3

frame.sort_index(axis=1, ascending=False)

'''
help(pd.Dataframe.sort_index)  查看用法
axis 只有两个值 : 0 and 1,df中只有两个index分别是表最左一列的时间和表最上一行的dabc
axis=0对应的是对左边一列的index进行排序,ascending=False代表降序,ascending=True代表升序
axis=1对应的是对上边一行的index进行排序,
so,res = 
Out:     ---->
       d  c  b  a
three  0  3  2  1
one    4  7  6  5
'''
# 按值排序
frame = Dataframe({'b':[4, 7, -3, 2], 'a':[0, 1, 0, 1]})
frame.sort_values(by='b')  #Dataframe必须传一个by参数表示要排序的列
Out[97]: 
   a  b
2  0 -3      |
3  1  2      | 
0  0  4      |
1  1  7      ↓
4.2 删除

删除Series的元素或Dataframe的某一行(列)
drop(labels, axis=0)
需要注意的是drop()返回的是一个新对象,元对象不会被改变。

df = Dataframe(np.arange(9).reshape(3,3), index=['a','c','d'], columns=['oh','te','ca'])
Out[18]: 
   oh  te  ca
a   0   1   2
c   3   4   5
d   6   7   8

df.drop('a') # 默认删除行
Out[19]: 
   oh  te  ca
c   3   4   5
d   6   7   8

df.drop(['oh','te'],axis=1) # axis = 1删除列
Out[20]: 
   ca
a   2
c   5
d   8
4.3 基本运算

Dataframe中的算术运算是df中对应位置的元素的算术运算,如果没有共同的元素,则用NaN代替。
也可用fill_value = ?传入填充值

df1 = Dataframe(np.arange(12.).reshape((3,4)),columns=list('abcd'))
df2 = Dataframe(np.arange(20.).reshape((4,5)),columns=list('abcde'))
df1+df2  # df1.add(df2,fill_value = 0)
Out[9]: 
    a   b   c   d   e
0   0   2   4   6 NaN
1   9  11  13  15 NaN
2  18  20  22  24 NaN
3 NaN NaN NaN NaN NaN
4.4 去重

Dataframe的duplicated方法返回一个布尔型Series,表示各行是否是重复行。
drop_duplicates()用于去除重复的行数,

df = Dataframe({'k1':['one']*3 + ['two']*4, 'k2':[1,1,2,3,3,4,4]})
Out[2]: 
    k1  k2
0  one   1
1  one   1
2  one   2
3  two   3
4  two   3
5  two   4
6  two   4

df.duplicated()
Out[3]: 
0    False
1     True
2    False
3    False
4     True
5    False
6     True
dtype: bool

df.drop_duplicates()
Out[4]: 
    k1  k2
0  one   1
2  one   2
3  two   3
5  two   4

5. 层次化索引
data = Series(np.random.randn(10), index = [['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd' ],[1,2,3,1,2,3,1,2,2,3]])
Out[2]:
a  1    0.169239
   2    0.689271
   3    0.879309
b  1   -0.699176
   2    0.260446
   3   -0.321751
c  1    0.893105
   2    0.757505
d  2   -1.223344
   3   -0.802812
    
data['b':'d']    # b-d
Out[3]:
b  1   -0.699176
   2    0.260446
   3   -0.321751
c  1    0.893105
   2    0.757505
d  2   -1.223344
   3   -0.802812
    
data[:, 2] # 每一种index里面的第二个
Out[4]:
a    0.689271
b    0.260446
c    0.757505
d   -1.223344

# 将Series转化成Dataframe:
data.unstack()
Out[5]:
1                    2            3
a    0.169239    0.689271    0.879309
b    -0.699176   0.260446  -0.321751
c    0.893105    0.757505    NaN
d    NaN        -1.223344   -0.802812

来源:头歌

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/651770.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号