今天真的好热,好闷,下次接着更新,这些都是机器学习用的比较多的知识点,所以记录下来。
为什么要学pandas
因为pandas佳木皮使得数据分析工作变的更快和更简单的高级数据结构和操作工具
pandas是基于numpy来进行构建的,让以numpy为中心的应用变的更加简单
#pip install pandas
import pandas as pd
from pandas import Series,DataFrame
Series类型说明
这个就是一种类似于一维数组的对象,它是由一组数据以及一组与之相关的数据标签组成(索引),仅由一组数据即可产生最简单的Series
#默认索引
obj = Series([1,2,3,4,5])
print(obj)#前面的0,1,2,3,4,就是obj的索引
out:
0 1
1 2
2 3
3 4
4 5
dtype: int64
#自定义索引
obj = Series(['a','b','c','d','e'],index=[1,2,3,4,5])
print(obj)
out:
1 a
2 b
3 c
4 d
5 e
dtype: object
#通过索引访问,这个索引不是从0开始的,,看看自己设置的索引,如果是默认的就是从0开始的
obj[2]
out:
'b'
#我们也可以把Series当做字典来使用
data = {'a':10000,'b':2222,'c':3333}
obj = Series(data)#这个事就,series中的索引就是字典中的键
print(obj)
keys = ['a','c']
obj_1 = Series(data,index=keys)#会根据key过滤掉指定的索引值
print(obj_1)
out:
a 10000
b 2222
c 3333
dtype: int64
a 10000
c 3333
dtype: int64
#缺失数据的处理
data = {'a':None,'b':2000,'c':3000}
obj = Series(data)
print(obj)
out:
a NaN
b 2000.0
c 3000.0
dtype: float64
pd.isnull(obj)
out:
a True
b False
c False
dtype: bool
pd.notnull(obj)
out:
a False
b True
c True
dtype: bool
#也可以换一种写法
obj.isnull()
out:
a True
b False
c False
dtype: bool
data = {'lilei':None,'huameimei':25,'tony':None,'jack':None}
obj = Series(data)
obj.name = 'nameAge'
obj.index.name = 'aaaa'
print(obj)
obj['huameimei']
out:
aaaa
huameimei 25.0
jack NaN
lilei NaN
tony NaN
Name: nameAge, dtype: float64
25.0
dataframe类型
dataframe是一个表格型的数据类型,它含有一组有序序列,每列可以是不同值的类型,数值,字符串,布尔值都可以。
dataframe本身有行索引,也有列索引
dataframe也可以理解成是有series组成的一个字典
#认识一下,什么叫做有行索引和列索引
data = {'60年代':['钩子','包子','凳子'],
'70年代':['红楼梦','哈哈哈','红了么'],
'80年代':['美团','饿了么','大众点评']
}
df = pd.DataFrame(data)
print(df)
#获取一列得到的数据就相当于一个series
print(df['60年代'])
out:
60年代 70年代 80年代
0 钩子 红楼梦 美团
1 包子 哈哈哈 饿了么
2 凳子 红了么 大众点评
0 钩子
1 包子
2 凳子
Name: 60年代, dtype: object
import numpy as np
dates = pd.date_range('20190301',periods=6)
dates
out:
DatetimeIndex(['2019-03-01', '2019-03-02', '2019-03-03', '2019-03-04',
'2019-03-05', '2019-03-06'],
dtype='datetime64[ns]', freq='D')
df = pd.DataFrame(np.random.rand(6,4),index=dates,columns=list('ABCD'))
df
out:
A B C D
2019-03-01 0.833068 0.916117 0.601806 0.769326
2019-03-02 0.774198 0.880252 0.102098 0.397188
2019-03-03 0.232571 0.561741 0.114664 0.126821
2019-03-04 0.374874 0.302047 0.225464 0.547099
2019-03-05 0.874548 0.884560 0.471806 0.026096
2019-03-06 0.415229 0.469584 0.453235 0.821153
#还可以进行转置
df.T
out:
2019-03-01 00:00:00 2019-03-02 00:00:00 2019-03-03 00:00:00 2019-03-04 00:00:00 2019-03-05 00:00:00 2019-03-06 00:00:00
A 0.833068 0.774198 0.232571 0.374874 0.874548 0.415229
B 0.916117 0.880252 0.561741 0.302047 0.884560 0.469584
C 0.601806 0.102098 0.114664 0.225464 0.471806 0.453235
D 0.769326 0.397188 0.126821 0.547099 0.026096 0.821153
dataframe切片
df['20190301':'20190303']
out:
A B C D
2019-03-01 0.833068 0.916117 0.601806 0.769326
2019-03-02 0.774198 0.880252 0.102098 0.397188
2019-03-03 0.232571 0.561741 0.114664 0.126821
df.loc['20190301':'20190303',['A','B']]#对行和列的筛选
out:
A B
2019-03-01 0.833068 0.916117
2019-03-02 0.774198 0.880252
2019-03-03 0.232571 0.561741
df.at[dates[0],'A']
out:
0.83306813476177854
df.head(2)#获取前两行
out:
A B C D
2019-03-01 0.833068 0.916117 0.601806 0.769326
2019-03-02 0.774198 0.880252 0.102098 0.397188
df.tail(3)#获取后三行
out:
A B C D
2019-03-04 0.374874 0.302047 0.225464 0.547099
2019-03-05 0.874548 0.884560 0.471806 0.026096
2019-03-06 0.415229 0.469584 0.453235 0.821153
dataframe构造函数能够接受哪些数据类型呢?
1、二维的numpy,array
2、由数组、列表或者元组组成的字典
3、由字典组成的字典
4、由Series组成的字典
5、字典或者series的列表
6、由列表或元组组成的列表
7、另一个dataframe
网友评论