Pandas学习笔记

Pandas是用于数据分析的包,可以用于时间序列的处理中去。

Pandas数据结构介绍

series:一种类似于一维数组对象。由一组数据(numpy类型)以及一组相关数据标签组成的。

DataFrame:表格数据结构。含有一组有序的列。DataFrame既有行索引也有列索引,可以被看做是由Series组成的字典。

1、series

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
arr = np.array([1,2,3,4])
##将数组中的数据形成序列
series01 = Series(arr)
print("形成字典,key是序列号\n",series01)
#调用序列号为0的数据
print("调用序列号为0的数据")
print(series01[0])
print("序列号",series01.index)
print("值",series01.values)
print("类型",series01.dtype)
形成字典,key是序列号
 0    1
1    2
2    3
3    4
dtype: int32
调用序列号为0的数据
1
序列号 RangeIndex(start=0, stop=4, step=1)
值 [1 2 3 4]
类型 int32

2、更换索引内容判断series中的值的大小

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
arr = np.array([1,2,3])
serises01 = Series(arr)
serises01.index = ("tom","ad","cc")
print("更换索引内容")
print(serises01)
serises02 = Series(arr,index = ("a","b","c"))
print(serises02)

arr2 = Series({"a":100,"b":32,"c":22})
new_index= ["a","b","d","c"]
serises03 = Series(arr2,index=new_index)
print(serises03)

serises04 = pd.isnull(serises03)
serises05 = pd.notnull(serises03)
serises06 = serises03>10
print("判定是空\n")
print(serises04)
print("判定不是空\n")
print(serises05)
print("判定所有的值是\n")
print(serises06)
更换索引内容
tom    1
ad     2
cc     3
dtype: int32
a    1
b    2
c    3
dtype: int32
a    100.0
b     32.0
d      NaN
c     22.0
dtype: float64
判定是空

a    False
b    False
d     True
c    False
dtype: bool
判定不是空

a     True
b     True
d    False
c     True
dtype: bool
判定所有的值是

a     True
b     True
d    False
c     True
dtype: bool

3、将两个series进行整合处理

from pandas import Series,DataFrame
series01 = Series({"P1":23,"P2":33,"P3":24,"P4":36})
series02 = Series({"P2":29,"P4":26,"P5":67})
series03 = series01 + series02
series03.name = "温度"
print(series03)
P1     NaN
P2    62.0
P3     NaN
P4    62.0
P5     NaN
Name: 温度, dtype: float64

4、DataFrame进行处理:只能用于二维的

这玩意就相当于将一个二维表填入

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
dataFrame01 = DataFrame([[1,2,3,4,5],[1,4,5,6,8],[6,4,7,3,5]])
print("有序列号了\n")
print(dataFrame01)
arr = np.array([[1,2,3,4,5],[1,4,5,6,8],[6,4,7,3,5]])

dataFrame02 = DataFrame(arr,index=["a","b","c"],columns=["n","d","g","s","v"])
print("index定义行名,column定义列名")
print("定义行和列的名字\n",dataFrame02)
有序列号了

   0  1  2  3  4
0  1  2  3  4  5
1  1  4  5  6  8
2  6  4  7  3  5
index定义行名,column定义列名
定义行和列的名字
    n  d  g  s  v
a  1  2  3  4  5
b  1  4  5  6  8
c  6  4  7  3  5

5、表的信息

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
arr = np.array([1,2,3,4,5,6,7,8])
series01 = Series(arr)

print("不为零的个数\n",series01.count())
print("最大值\n",series01.max())
print("最小值\n",series01.min())
print("平均值\n",series01.mean())
print("索引位置\n",series01.argmax)
print("索引值\n",series01.idxmax())
print("和\n",series01.sum())
print("中位数\n",series01.median())
print("绝对离差\n",series01.mad())
print("方差\n",series01.var())
print("标准差\n",series01.std())
print("",series01.describe)

不为零的个数
 8
最大值
 8
最小值
 1
平均值
 4.5
索引位置
 <bound method IndexOpsMixin.argmax of 0    1
1    2
2    3
3    4
4    5
5    6
6    7
7    8
dtype: int32>
索引值
 7
和
 36
中位数
 4.5
绝对离差
 2.0
方差
 6.0
标准差
 2.449489742783178
 <bound method NDFrame.describe of 0    1
1    2
2    3
3    4
4    5
5    6
6    7
7    8
dtype: int32>

 6、表的处理(相关系数,协方差,非0,缺失值,0填补)

from pandas import Series,DataFrame
dataFrame01 = DataFrame({"aa":[1,2,3,4],"bb":[3,1,5,2],"cc":[7,5,3,5]})
print("相关系数:")
print(dataFrame01.corr())
#自己和自己就是方差,协方差表示两个变量总体的误差,两个趋势一致为正,趋势相反则为负值
print("协方差:")
print(dataFrame01.cov())
print("是0不是0")
print(dataFrame01.isnull())
print(dataFrame01.notnull())
print("过滤缺失值\n",dataFrame01.dropna())
print("用0填补NAN\n",dataFrame01.fillna(0))
相关系数:
          aa        bb        cc
aa  1.000000  0.075593 -0.632456
bb  0.075593  1.000000 -0.478091
cc -0.632456 -0.478091  1.000000
协方差:
          aa        bb        cc
aa  1.666667  0.166667 -1.333333
bb  0.166667  2.916667 -1.333333
cc -1.333333 -1.333333  2.666667
是0不是0
      aa     bb     cc
0  False  False  False
1  False  False  False
2  False  False  False
3  False  False  False
     aa    bb    cc
0  True  True  True
1  True  True  True
2  True  True  True
3  True  True  True
过滤缺失值
    aa  bb  cc
0   1   3   7
1   2   1   5
2   3   5   3
3   4   2   5
用0填补NAN
    aa  bb  cc
0   1   3   7
1   2   1   5
2   3   5   3
3   4   2   5

7、Pandas的包

1.调用read_csv包来读出数据文件

data = pd.read_csv("地址",usecols = [一个使用第几列的数据数组])

2.get_dumies   将数据中的NA列进行独立出来,并且形成两个新的列

inputs = pd.get_dummies(inputs,dummy_na=True)
NuRooms  Alley_pave  Alley_nan
0      3.0           1          0
1      2.0           0          1
2      4.0           0          1
   NuRooms Alley  Price
0      NaN  pave   1314
1      2.0   NaN  10933
2      4.0   NaN  13423

3、to_excel 将dataFrame转化成为EXCEL模式

# # 在不用with语句时需要用writer.close()
#write = pd.ExcelWriter("../data/test.xlsx")   # 此处在对绝对路径新建一个xlsx文件。
write = pd.ExcelWriter("test.xlsx")      # 此处新建一个xlsx文件。
df1 = pd.DataFrame([[1, 2],[3,4]],columns=['a','b'])    #构建一个dataFarme文件
df1.to_excel(write, sheet_name='Sheet1', index=False)  # 写入文件的Sheet1   sheet工作表的意思

write.save()  # 这里一定要保存
write.close()

4、更给DataFrame中的值

1、使用index来进行更改

label_df.iloc[0,1] = 1

 蓝色方框的表中的位置是0行1列的数据

5、直接通过标签来进行修改数据

label_df.loc['100000','label_0'] = 10001

这里直接通过两个标签来对数组中的值进行修改;

 其中第一个为数据中默认且唯一的序列数

6、依据条件修改值

label_df.label_0[label_df.label_2==0] = 0

此处的按照条件进行更改,修改label_df中的label_0值,而修改的依据就是label_df中的label_2为0

修改之后的结果为:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值