一、pandas是什么?
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、使用步骤
1.引入库
代码如下(示例):
import pandas as pd
2.series对象的创建
Series 是一种类似于 Numpy 中一维数组的对象,它由一组任意类型的数据以及一组与之相关的数据标签(即索引)组成。
默认数据标签为0 1 2 3 …… n
import pandas as pd
print(pd.Series([2,4,6,8]))
#0 2
#1 4
#2 6
#3 8
#dtype: int64
也可以用index函数定义数据标签
import pandas as pd
print(pd.Series([2,4,6],index=["x","y","z"]))
#x 2
#y 4
#z 6
#dtype: int64
也可以直接用字典转化为series数据
import pandas as pd
print(pd.Series({"x":2,"y":4,"z":6}))
#x 2
#y 4
#z 6
#dtype: int64
获取series数据与python中访问列表与字典数据一致
import pandas as pd
m = pd.Series({"a":2,"b":4,"c":6})
n = pd.Series({"a":10,"b":7,"c":9})
print(m["a"],n["b"])
#2 7
series数据相加,将相同标签相加。因为pandas具有强大的数据对齐功能
import pandas as pd
m = pd.Series({"a":2,"b":4,"c":6})
n = pd.Series({"a":10,"b":7,"c":9})
print(m+n)
#a 12
#b 11
#c 15
#dtype: int64
相减相乘相除都可以
import pandas as pd
m = pd.Series({"a":2,"b":4,"c":6})
n = pd.Series({"a":10,"b":7,"c":9})
print(m-n)
#a -8
#b -3
#c -3
#dtype: int64
import pandas as pd
m = pd.Series({"a":2,"b":4,"c":6})
n = pd.Series({"a":10,"b":7,"c":9})
print(m*n)
#a 20
#b 28
#c 54
#dtype: int64
import pandas as pd
m = pd.Series({"a":2,"b":4,"c":6})
n = pd.Series({"a":10,"b":7,"c":9})
print(m/n)
print(n//m)
#a 0.200000
#b 0.571429
#c 0.666667
#dtype: float64
#a 5
#b 1
#c 1
#dtype: int64
如果有不同数据则会出现下列情况,NaN=not number因为没有数据,只能返回NaN
import pandas as pd
m = pd.Series({"a":2,"b":4,"d":6})
n = pd.Series({"a":10,"b":7,"c":9})
print(m+n)
#a 12.0
#b 11.0
#c NaN
#d NaN
#dtype: float64
想要返回数据0,则可以调用add()函数 fill_value=0指的是数据缺失时的默认值为0
import pandas as pd
m = pd.Series({"a":2,"b":4,"d":6})
n = pd.Series({"a":10,"b":7,"c":9})
print(m.add(n,fill_value=0))
#a 12.0
#b 11.0
#c 9.0
#d 6.0
#dtype: float64
相应的减法乘法除法也可以
减法sub(n,fill_value=0)
乘法mul(n,fill_value=0)
除法div(n,fill_value=0)
3.DateFrame数据
Series 是一维数据,而 DataFrame 是二维数据。DataFrame 类似一个表格,表格有行和列这两个维度,所以是二维数据。表格中的每一行或每一列都是一个 Series,这些 Series 就组成了 DataFrame。按行分,每一行数据加上上面的数据标签就是一个 Series。
创建DateFrame数据
import pandas as pd
m = pd.DataFrame({"a":[10,5],"b":[6,8],"c":[3,12]})
print(m)
# a b c
#0 10 6 3
#1 5 8 12
因为我们的表格中有中文,中文占用的字符和英文、数字占用的字符不一样,因此需要调用pd.set_option()使表格对齐显示
DateFrame亦具有index索引
import pandas as pd
m = pd.DataFrame({"a":[10,5],"b":[6,8],"c":[3,12]},index=["0001","0002"])
print(m)
# a b c
#0001 10 6 3`在这里插入代码片`
#0002 5 8 12
DateFrame的查找,也可以通过类似列表字典的方式查找
import pandas as pd
m = pd.DataFrame({"a":[10,5],"b":[6,8],"c":[3,12]})
print(m["a"])
#0 10
#1 5
#Name: a, dtype: int64
也可多列按查找数据顺序进行查找
import pandas as pd
m = pd.DataFrame({"a":[10,5],"b":[6,8],"c":[3,12]})
print(m[["b","a"]])
# b a
#0 6 10
#1 8 5
修改列
与字典修改方式相似,直接重新赋值即可
import pandas as pd
m = pd.DataFrame({"a":[10,5],"b":[6,8],"c":[3,12]})
print(m)
m["a"] = [8,9]
print(m)
# a b c
#0 10 6 3
#1 5 8 12
# a b c
#0 8 6 3
#1 9 8 12
新增列
直接将不纯正的标签进行赋值即可
import pandas as pd
m = pd.DataFrame({"a":[10,5],"b":[6,8],"c":[3,12]})
m["d"] = [8,9]
print(m)
# a b c d
#0 10 6 3 8
#1 5 8 12 9
删除列
删除列需要用到drop()方法
drop() 方法的第一个参数是要删除的列名或索引。axis 表示针对行或列进行删除,axis = 0 表示删除对应的行,axis = 1 表示删除对应的列,axis 默认为 0。
最后的 inplace = True 表示直接修改原数据,否则 drop() 方法只是返回删除后的表格,对原表格没有影响。
import pandas as pd
m = pd.DataFrame({"a":[10,5],"b":[6,8],"c":[3,12]})
m.drop("a",axis=1,inplace = True)
print(m)
# b c
#0 6 3
#1 8 12