相比于numpy,pandas不仅能处理数值型的数据,还能处理其他类型的数据。
Series:一维数组。DataFrame:二维数组,Series容器。
Series的创建:
import pandas as pd
import string
a=pd.Series([1,2,5,11,64,1]) #Series的创建
print(type(a))
print(a)
t=pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10])) #index指定索引类型
print(t)
print(type(t))
print(t["A"])
#对于字典
dict={"姓名":"小红","年龄":18,"电话":123456}
t1=pd.Series(dict)
print(type(t1))
print(t1) #变成一一对应
#Series的切片和索引
print(t1["姓名"])
#numpy处理数值数据,pandas还可以帮我们处理其他类型的数据,Series由两部分构成,键————>值
r=pd.DataFrame(np.arange(12).reshape(3,4)) #用DataFrame创建一个3*4的矩阵
print(r)
print("*"*100)
s=pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("defg")) #注意,index和columns必须将字符串强转为列表类型
print(s)
from pymongo import MongoClient
client=MongoClient()
collections=client["douban"]["tv1"]
data=collections.find()
print(list(data))
df=pd.Dataframe(list(data))
print(df)
利用MongoClient搜索数据,用Dataframe接收(注意:如果没下载此数据库,无法得到此数据。)
q=pd.DataFrame(np.arange(12).reshape(3,4))
print(q)
print(q.values) #将q变为一个二维的列表
print("*"*50)
print(q.index) #显示行索引信息
print("*"*50)
print(q.columns) #显示列索引信息
print("*"*50)
print(q.info)
print(q.describe())#展示q的概览
print("*"*50)
print(q.head(2)) #得出q的前2行信息,默认时是5行
e=pd.DataFrame(np.arange(25).reshape(5,5),index=list("abcde"),columns=list("fghij"))
print(e)
e=e.sort_values(by="f",ascending=False) #by后面只能传列索引参数且只能传一个
print(e)
print("*"*100)
e=e.sort_values(by="h",ascending=False) #用于对比
print(e)
e=pd.DataFrame(np.arange(25).reshape(5,5),index=list("abcde"),columns=list("fghij"))
print(e)
#pandas取行或者取列的注意点
#方括号写数组,表示取行,对行进行操作
#写字符串,表示取列索引,对列进行操作
print(e[:3])
print(e["h"])
print(type(e["h"]))
e[:2]["h"]
经过pandas优化过的选择方式
e.loc :通过标签获取数据(标签就是字符串)
e.iloc:通过位置获取行数据
e1=pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("wxyz"))
print(e1)
print(e1.loc["a","z"])
print(e1.iloc[:,2])
w x y z
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
3
a 2
b 6
c 10
Name: y, dtype: int32
df=pd.read_csv("wom.csv")
print(df)
print(df[(50<df["年龄"])&(df["年龄"]>50)])
狗 年龄
0 12 32
1 15 62
2 12 62
狗 年龄
1 15 62
2 12 62