pandas

 

目录

pandas 数据分类

series的三种方式

索引取值

pandas 从各种应用读取数据(datafram)

loc(索引值取值) 和iloc(按索引取值)

bool索引

缺省数据的处理

处理缺省

常用统计方法

DataFrame 使用时间序列

重采样:


numpy能处理一些数值了,并且能用matplotlib 分析了,但是一些数据为字符串,时间序列呢

还有爬虫爬到的数据库里的内容等情况

所以pandas还能处理其他数据

pandas 数据分类

​​​​​series一维,带标签数组 
DataFrame二维,series 容器

series的三种方式

# 方式一:
t=pd.Series(range(10),index=list(string.ascii_uppercase[:10]))  #写index自定制索引,注:不能超过26 index数量必须和前面的数量一致【 A 0  B 1  C 2】
print(type(t)) #<class 'pandas.core.series.Series'>
# 方式二:
a={string.ascii_uppercase[i]:i  for i in range(6)}
t2=pd.Series(a)
print(t2)

# 方式三: 通过上述方法指定新的索引,则是通过索引取值,娶不到为Nan
t3=pd.Series(a,index=list(string.ascii_uppercase[5:11]))
#F    5.0
# G    NaN
# H    NaN
# I    NaN
# J    NaN
#因为NAN 为float 类型所以全部都变了

索引取值

t3[0]  #F    5.0
t2["F"] #5.0
t[2:10:2] #挎着取
t[[2,3,5]] #取三个指定索引
t[t>6] #取值大于5的
t[["xxx"]] # Nan 取不到为Nan
t.index #取出所有的索引 Index(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'], dtype='object')
t.values #取出所有的zhi  array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=int64)
#np.argmax(np.array(values)) 可以使用np 的一些方法h和clip
# t.where(t>2,1)  不符合为1
# t.where(t>2)  不符合为NAN

pandas 从各种应用读取数据(datafram)

import  pandas as  pd
data=pd.read_csv("./qq.csv")  # 可以读取各种东西
print(data)
#   7749   552   334  991
# 0   281    40   300  104
# 1   537   620  1305   18
# 2  1359  1040   361   14
# 3  1305    18  1305   18

DataFrame /DataFrame的描述信息

方式一:
import pandas as pd
a={"one":{"A":2,"B":3},"two":{"A":3,"B":4}}
t1=pd.DataFrame(a)
print(t1)
方式二:
df=pd.read_csv("./qq.csv")  # 可以读取各种东西

方式三:
pd.DataFrame(np.arange(40).reshape(10,4),index=list(string.ascii_uppercase[:10]),columns=list("abcd"))  #不能为单纯的字符串



df.columns #列索引

df.index  #RangeIndex(start=0, stop=9, step=1)

df.shape#形状


df.dtypes  #每一列的数值类型

df.ndim #维度 #2

df.values #  返回numpy的array 数组

df.head(5)  #显示头部几行

df.tail(5)  #显示尾部几行

df.info()#查看datafarom 的信息
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 9 entries, 0 to 8
# Data columns (total 4 columns):
# 浏览    9 non-null int64
# 点赞    9 non-null int64
# 踩     9 non-null int64
# 评论    9 non-null object



df.describe()  #计数,均值,标准差,最小值,1/4位数,1/2位数 3/4位数 最大值
#                 浏览           点赞            踩
# count     9.000000     9.000000     9.000000
# mean   1642.888889   496.888889   659.111111
# std    2338.391886   464.338358   484.993156
# min     281.000000    18.000000   300.000000
# 25%     537.000000    40.000000   334.000000
# 50%    1305.000000   552.000000   361.000000
# 75%    1359.000000  1040.000000  1305.000000
# max    7749.000000  1040.000000  1305.000000









#排序
df.sort_values(by="浏览",ascending=True) #默认升序 ,ascending 升序,关后可以变为降序

#第一个为列,第二个为行 和serice相反
df[:1]#取第一行
df["列名"]

loc(索引值取值) 和iloc(按索引取值)

import numpy as np
t3=pd.DataFrame(np.arange(40).reshape(10,4),index=list(string.ascii_uppercase[:10]),columns=list("abcd"))
t3.loc["A","a"]
t3.loc["A",["a","b"]]  #A 行  a,b列 他是一个series
# a    0
# b    1

t3.loc["A":,["a","b"]]  #A 行开始 所有的a,b列
t3.loc["A":"C","a":]   #A 行开始~C行  所有的a后面的列



#t3.iloc[2]  第2行

# t3.iloc[:,2] #第二列
# t3.iloc[:,[2,1]]  索引2列居然能和1列互换位置


t3.iloc[[0,2],[2,1]]   #不想讲了 自己十八

t3.iloc[[0,2],[2,1]] =0  #这个区间全部变0 T3
print(t3)
t3.iloc[[0,2],[2,1]] =np.nan   #这个区间全部变0 变为浮点型
print(t3)

bool索引

t3[(t3["c"]>18)&(t3["c"]<30)]  # 如果像要多个条件筛选 那就要 df[ tiaojian  and    tiaojian   ]
t3[df["c"].str.len()>4]  #可以判断字符串长度
#字符串 其他方法见表


# df["评论"].str.split("|")  #转为series  使用to_list()则为转为列表

缺省数据的处理

1中是 NAN 一种是0
看哪种 比如电话号码缺失的话 改为0 没意义
又比如有些0有意义不能变为nan


处理缺省


# 找出缺省的处理
df=pd.read_csv("./qq2.csv")
print( pd.isnull(df))  #筛选出是nan
df[pd.isnull(df["评论"])]  #找出有nan的哪一行


# 方式二:
df.dropna(axis=0,how="all",inplace=False) #剔除全部有nan那一行  inplace 设为True后就原地剔除了
df.dropna(axis=0,how="any",inplace=False)# 剔除有nan的那一行  inplace 设为True后就原地剔除了

#方式三:
df.fillna(0)  #是nan的变为0
df.fillna(0)  #是nan的变为0
df.mean()  #每一列的平均值
df["评论"]=df["评论"].fillna(df["评论"].mean()) #df评论中的所有nan都替换成均值

常用统计方法

#常见方法统计
# df["two"].mean()
# daoyan_list=df["two"].str.split(",").tolist() #找出导演列表那一列,然后求出列表
# daoyan_num=len(set(daoyan_list)) #求长度

#电影时常最大值最小值
df=pd.DataFrame(a)
df["two"].max() #最大电影时常
df["two"].idxmax()  #最大值索引 这种方法适合series
df["two"].median()  #中值

DataFrame 使用时间序列

 

重采样:

 t.resample("M").mean()  #按照月分采样求均值

 

 

 

# import numpy as np
# import pandas as  pd
# df=pd.read_csv(r"C:\Users\xzq\PycharmProjects\untitled18\数组\tpy.csv")
# x=(pd.to_datetime(df["时间"],format=""))  #就可以把有事件措那一列 作为seise 返回
# # x=pd.date_range("20180102","20181102",periods=3) #返回一个DatetimeIndex   periods分组
#
# # print(df["time"] )
# df["time"]=x
# df.set_index("time",inplace=True)
#
#
#
# print(df.resample("M").count())   #按照月统计 #属于6月的个数
# print(df.resample("10").count())   #按照10天
#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值