学习内容:
1.pandas的基本操作
重点:
pandas作为数据分析被广泛应用,对于其指令,我不在一一介绍,通过具体代码展示,并会在代码后面附上其基本功能
1.创建二维数组
import numpy as np
import pandas as pd
s = pd.Series([1, 3, 5, np.NAN, 8, 4]) # 产生序列,并给对应值加上索引
print(s)
dates = pd.date_range("20190122", periods=7) # 产生日期数组
print(dates)
data = pd.DataFrame(np.arange(28).reshape(7, 4), index=dates,
columns=['A', 'B', 'C', 'D']) # 创建二维数组,行索引使用dates,列索引用列表的内容
print(data)
结果如下
0 1.0
1 3.0
2 5.0
3 NaN
4 8.0
5 4.0
dtype: float64
DatetimeIndex(['2019-01-22', '2019-01-23', '2019-01-24', '2019-01-25',
'2019-01-26', '2019-01-27', '2019-01-28'],
dtype='datetime64[ns]', freq='D')
A B C D
2019-01-22 0 1 2 3
2019-01-23 4 5 6 7
2019-01-24 8 9 10 11
2019-01-25 12 13 14 15
2019-01-26 16 17 18 19
2019-01-27 20 21 22 23
2019-01-28 24 25 26 27
还要第二种方法
a = {"A": 1, "B": pd.Timestamp("20190122"), "C": range(4), "D": np.arange(4)}
b = pd.DataFrame(a)
print(b)
结果如下
A B C D
0 1 2019-01-22 0 0
1 1 2019-01-22 1 1
2 1 2019-01-22 2 2
3 1 2019-01-22 3 3
无论怎么创建使用的语句都是pd(导入pandas的简称).DataFrame()语句
2.数组的基本操作
print(data.index)#显示行索引
print(data.columns)#显示列索引
print(data.describe())#显示数组的常用数据
结果如下
DatetimeIndex(['2019-01-22', '2019-01-23', '2019-01-24', '2019-01-25',
'2019-01-26', '2019-01-27', '2019-01-28'],
dtype='datetime64[ns]', freq='D')
Index(['A', 'B', 'C', 'D'], dtype='object')
A B C D
count 7.000000 7.000000 7.000000 7.000000
mean 12.000000 13.000000 14.000000 15.000000
std 8.640988 8.640988 8.640988 8.640988
min 0.000000 1.000000 2.000000 3.000000
25% 6.000000 7.000000 8.000000 9.000000
50% 12.000000 13.000000 14.000000 15.000000
75% 18.000000 19.000000 20.000000 21.000000
max 24.000000 25.000000 26.000000 27.000000
排序操作
print(data.T) # data的转置
print(data.sort_index(axis=1)) # 按行操作排序
print(data.sort_index(axis=1, ascending=False)) # 降序排列
print(data.sort_index(axis=0, ascending=False)) # 按行索引降序排列
print(data.sort_values(by="A")) # 按值A 所在的行或列排序
使用标签的操作
已知标签
print(data.loc["20190122":"20190124"])#操作行索引
A B C D
2019-01-22 0 1 2 3
2019-01-23 4 5 6 7
2019-01-24 8 9 10 11
未知标签
print(data.iloc[2:4])#操作行索引
A B C D
2019-01-24 8 9 10 11
2019-01-25 12 13 14 15
print(data.loc[:,"B":"D"])#操作列索引
B C D
2019-01-22 1 2 3
2019-01-23 5 6 7
2019-01-24 9 10 11
2019-01-25 13 14 15
2019-01-26 17 18 19
2019-01-27 21 22 23
2019-01-28 25 26 27
print(data.iloc[:, 2:3])#未知标签操作列索引
C
2019-01-22 2
2019-01-23 6
2019-01-24 10
2019-01-25 14
2019-01-26 18
2019-01-27 22
2019-01-28 26
也可以同时对行列进行操作
print(data.iloc[2:4, 2:3])
C
2019-01-24 10
2019-01-25 14
at操作
扫描二维码关注公众号,回复:
8877388 查看本文章
print(data.at[pd.Timestamp("20190124"),"B"])#按照索引找到对应位置的值
9
print(data.iat[1,1])#未知索引查找对应位置的值
5
对已有数组进行增加和过滤操作
增加
e = [
1, 2, 3, 4, 5, 6, 7
]
data["E"] = e
print(data)
A B C D E
2019-01-22 0 1 2 3 1
2019-01-23 4 5 6 7 2
2019-01-24 8 9 10 11 3
2019-01-25 12 13 14 15 4
2019-01-26 16 17 18 19 5
2019-01-27 20 21 22 23 6
2019-01-28 24 25 26 27 7
#这种方法在增加时必须要输入对应数量的内容,不然便会报错!!!!!
过滤
print(data.E.isin([3,4]))#在data的E索引下,所在的内容是否在标签3和4
#这里的3和4是在上一个应用中所创建
#返回的结果是布尔型,为判断
2019-01-22 False
2019-01-23 False
2019-01-24 True
2019-01-25 True
2019-01-26 False
2019-01-27 False
2019-01-28 False
Freq: D, Name: E, dtype: bool