pandas统计分析

90 阅读2分钟

1. Series数据

创建series数据

0cecd80dfafc45f597ae9837802fae89.png

import pandas as pd
t=pd.Series([1,2,3,4,123,34])
print(t)
# 索引
t2=pd.Series([12,3,434,12,123],index=list('abcde'))
print(t2)
# 通过字典来创建
t3=pd.Series({'name':'xiaoming','age':18})
print(t3)
print(t3['name'])
# 去连续的多行
# 前两行
print(t2[:2])
print(t2[1:])
# 取不连续的多行
print(t[[1,2]])
print(t3[['name','age']])
print(t3.values)

切片:直接传入start end或者步长即可 索引:一个的时候直接传入序号或者index,多个的时候传入序号或者index的列表

2.DataFrame

创建dataframe

import numpy as np
import pandas as pd
t=pd.DataFrame(np.arange(12).reshape(3,4),index=list('abc'),columns=list('wxyz'))
print(t)
# 有 columns行索引 axis=0和  index列索引axis=1

t2=pd.DataFrame({"name":["xiaoming", "xiaogang"], "age": [20, 32], "tel": [10086, 10010]})
print(t2)

DataFrame的属性

333ee90c4f3d4431bf90fbadc433947c.png

detail= pd.read_sql_table('meal_order_detail1',con = engine)

print(detail.index) #订单详情表的索引

print(detail.values) #订单详情表的所有值

print(detail.columns) #订单详情表的列名

print(detail.dtypes) #订单详情表的数据类型'\n',

print(detail.size) ## 查看元素个数

print(detail.ndim) ## 查看DataFrame的维度数

print(detail.shape) ## 查看DataFrame的形状

 布尔索引,条件索引

print(detil.T.shape) ##订单详情表转置

排序

import pandas as pd
df=pd.read_csv("./dogNames2.csv")
print(df.head())
print(df.info())
#dataFrame中排序的方法
df=df.sort_values(by="Count_AnimalName",ascending=False)
print(df.head(10))

 布尔索引,条件索引

import pandas as pd
df=pd.read_csv("./dogNames2.csv")
#dataFrame中排序的方法
df=df.sort_values(by="Count_AnimalName",ascending=False)
#次数超过800的狗的名字
a=df[df["Count_AnimalName"]>800]
#使用次数超过700并且名字的字符串的长度大于4的狗
b=df[(df["Row_Labels"].str.len()>4)&(df["Count_AnimalName"]>700)]

取多行多列

loc方法

# loc方法
t1=pd.DataFrame(np.arange(12).reshape(3,4),index=list('abc'),columns=list('wxyz'))
print(t1)
print(t1.loc['a', 'w'])
print(type(t1.loc['a', 'w']))
print(t1.loc['a'])

print(t1.loc['a', :])
print(t1.loc[:,'w'])
print('*'*100)
print(t1.loc[['a','c'],:])
print('*'*100)
print(t1.loc[:,['w','y']])
print('*'*100)
print(t1.loc[['a','c'],['w','y']])
print('*'*100)
print(t1.loc['a':'c',['w','y']])
# c已经选中

iloc 方法

# iloc方法
t1=pd.DataFrame(np.arange(12).reshape(3,4),index=list('abc'),columns=list('wxyz'))
print('*'*100)
print(t1.iloc[1,:])
#     第二行
# 数字为索引
print('*'*100)
print(t1.iloc[:,3])
# 第三列
print('*'*100)
print(t1.iloc[[0,2],[2,1]])
print('*'*100)
print(t1.iloc[1:,:3])
# 也可以赋值
# t1.iloc[:,3]=100
print(t1)

注: 两者区别在于loc是用索引取值,iloc是用数字取值

【其他】字符串常用方法,切片

f29d3189f88c4ad182eaf1315c406a8b.png

修改数据

#修改
##将order_id为458的,变换为45800
detail.loc[detail['order_id']=='458','order_id'] = '45800'
#增加
detail['payment'] =  detail['counts']*detail['amounts'] #增加非定值
detail['pay_way'] = '现金支付' #增加定值
#删除
detail.drop(labels = 'pay_way',axis = 1,inplace = True)   #删除列
detail.drop(labels = range(1,11),axis = 0,inplace = True) #删除行

3.描述分析DataFrame

e064efdc9fc74fd5a470c716e30f9bfb.png