numpy能够帮我们处理数值,但是pandas除了处理数值之外(基于numpy),还能够帮助我们处理其他类型的数据(比如字符串、时间序列、图片等)。
通过列表
t = pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))
print(t)
print(type(t))
通过字典创建:
temp_dict = {“name:"xiaohong","age":30,"tel":10086}
t3 = pd.Series(temp_dict)
print(t3)
print(type(t3))
切片:直接传入start end 或者步长即可
索引:一个的时候可以传入序号或index,多个的时候传入序号或者index的列表。
Series对象本质上由两个数组构成。一个数组构成对象的键(index,索引),一个数组构成对象的值(values),键→值
对于一个陌生的series类型,如何知道他的索引和具体的值?
t.index #得到索引
t.values #得到值
遇到不懂的方法时去看文档
pd.read_csv() # 读取csv文件
pd.read_sql(sql_sentence,connection) #读取数据库中数据
import pandas as pd
df = pd.read_csv("路径")
读取MongoDB呢?
先安装环境:pip install pymongo
from pymongo import MongoClient
import pandas as pd
client = MongoClient()
collection = client["douban"]["tv1"]
data = list(collection.find())
t1 = data[0]
t1 = pd.Series(t1)
print(t1)
t = pd.DataFrame(np.arange(12).reshape(3,4))
DataFrame对象既有行索引,又有列索引
行索引,表明不同行,横向索引,叫index,0轴,axis=0
列索引,表明不用列,纵向索引,叫columns,1轴,axis=1
指定行索引和列索引:
t = pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("wxyz"))
DataFrame和Series有什么关系?
DataFrame是Series的容器。
Series能传入字典,那么DataFrame能够传入字典作为数据吗?
d1 = {"name":["xiaoming","xiaohong"],"age":[20,22],"tel":[10086,10010]}
pd.DataFrame(d1)
t1 = pd.DataFrame(d1)
type(t1)
d2 = [{"name":"xiaohong","age":22,"tel":10010},{"name":"xiaoming","age":20,"tel":10086}]
print(d2)
t2 = pd.DataFrame(d2)
print(t2)
df.shape #(行数 ,列数)
df.dtypes #列数据类型
df.ndim #数据维度
df.index #行索引
df.columns #列索引
df.values #对象值,二维ndarray数组
df.head(3) #显示头部几行,默认五行
df.tail(3) #显示末尾几行,默认五行
df.info() #相关信息概览:行数,列数,列索引,列非空值个数,行类型,列类型,内存占用
df.describe() #快速综合统计结果(数字类型):计数,均值,标准差,最大值,最小值,四份位数(25%,50%,75%)
DataFrame中排序的方法
按count_AnimalName从小到大排:
df = df.sort_values(by="count_AnimalName")
注意点:
df.loc 通过标签索引数据 标签:字符串
df.iloc 通过位置获取数据 位置:123
t = pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("wxyz"))
t.loc["a","z"]
type(t.loc["a","z"])
t.loc["a"]
t.loc["a",:]
t.loc[:,"y"]
t.loc[["a","c"],:]
t.loc[:,["w","z"]]
t.loc[["a","c"],["w","z"]]
t.iloc[1]
t.iloc[:,1]
赋值更改数据,可直接更改:t[1,1] = 0
不同条件之间需要用括号括起来
df[(800<df["xx"])&(df["xx"] <1000)]
对于NaN数据处理:
判断数据是否为Nan:pd.isnull(df),pd.notnull(df)
处理为0的数据:t[t==0] = np.nan
计算平均值等情况,nan是不参与计算的,但是0会。
原文:https://www.cnblogs.com/l999q/p/12339746.html