首页 > 其他 > 详细

pandas 常用方法使用示例

时间:2019-12-21 18:58:25      阅读:86      评论:0      收藏:0      [点我收藏+]
from pandas import DataFrame
import numpy as np
import pandas as pd

t={
    "age": [18, 30, np.nan, 40, np.nan, 30],
    "city": ["BeiJing", "ShangHai", "GuangZhou", "ShenZhen", BeiJing, "ShangHai"],
    "sex": [None, "male", "female", "male", np.nan, "unknown"],
    "birth": ["2000-02-10", "1988-10-17", None, "1978-08-08", np.nan, "1988-10-17"],
    "score":[11,7,33,44,22,33],
    "naem":[sdf,aa,bb,tt,ere,tt],
    "name":[sdf 11,aa 22,bb 33,tt 44,ere 55,tt 66]
}

df =DataFrame(t)
cc=df.isnull().sum()  #每列none的个数
print(df[df.age.notnull()]) # isnull()
df.dropna() #删除none所在行
df1=df[score]
df1.index=[a,b,c,d,e,f] # 为series定义新的索引
df1.name=aiyou
print(df1[df1<22]) # 对 series 进行过滤
print(df1[[a,c]]) # 获取两个元素
print((df1[:3]))  # 对series切片
print((df1+2))   # series 给每个元素加2
print(df1.to_frame()) #series 变成 dataframe
print(df1[a]) # 可以将series当做dict使用,series的index就是dict的key
print(df.loc[[1,2],[age]])  # 查询指定的行和列
# 访问行用loc 或 iloc
print(df[(df.age>0)&(df.age<40)])
print(df[(df.age>0)&(df.age<40)][[age]])# 查询特定的行和列
print(df.count()) # 非空的个数
print(df.sum()) # 非空的个数
print(df.pop(naem))  # 删除一列,返回值是删除的这列,原来的df发生了变化
print(df.drop(age,axis=1))# 删除一列,返回值是后的结果,原来的df没发生变化
print(df[[age,score]])
# print(s6+s7)  s6和s7是两个series,s6中不存在g索引,s7中不存在e索引,所以数据运算会产生两个缺失值NaN
clonedf=df.assign(age_add_one = df["age"] + 1) #在克隆df的同时再加上一列  如果想要保证原有的 DataFrame 不改变的话,我们可以通过 assign 方法来创建新的一列
print(clonedf)

df[age_code]= np.where(df["age"] >22, 1, 0)  # 根据某列的值,产生新的一列
df[age]=np.where(df[age]<df[score],df[score],df[age])
print(type(df[[age]]))  # DataFram
print(type(df[age]))  # Series
print(df.shape)
print(df.head(2)) # 查看前两行数据
print(df.tail(2))
print(df[age].value_counts()) # 获取某列中每个值出现的次数
print(df.sort_index(ascending=False)) # 按索引排序
print(df.sort_values(by=[age,age_code])) #按值排序
print(df[age].idxmax()) #获取最大值的索引
print(df[age].idxmin()) # 获取最小值的索引
‘‘‘
map 是 Series 中特有的方法,通过它可以对 Series 中的每个元素实现转换
apply 方法既支持 Series,也支持 DataFrame,在对 Series 操作时会作用到每个值上,在对 DataFrame 操作时会作用到整行或整列(通过 axis 参数控制)。
applymap 方法针对于 DataFrame,它作用于 DataFrame 中的每个元素,它对 DataFrame 的效果类似于 apply 对 Series 的效果
‘‘‘
df[age] = df[age].combine_first(df[score]) # 利用另一列的值填补此列的None
print(df.rename(index={1: "tom", 3: "bob"})) #修改索引
print(df.rename(columns={"age": "Age", "city": "City", "sex": "Sex"})) #修改列名
print(df["age"].astype(float)) # 转换数据类型
print(pd.to_numeric(df.age, errors="ignore")) # errors=raise,这意味着强转失败后直接抛出异常,设置 errors=coerce 可以在强转失败时将有问题的元素赋值为 pd.NaT(对于datetime和timedelta)或 np.nan(数字)。设置 errors=ignore 可以在强转失败时返回原有的数据
print(df.age.nlargest(2))  # 获取最大的n个值或最小值的n个值,我们可以使用 nlargest 和 nsmallest 方法来完成,这比先进行排序,再使用 head(n) 方法快得多
df["birth"] = pd.to_datetime(df.birth)  # 把数据类型转成时间
print(df.city.str.upper()) # print(df.city.str.len())  user_info.city.str.replace(" ", "_") str 方法的使用
print(df.name.str.split( ).str.get(1))  # 对字段进行分割
df[[name1,name2]]=df.name.str.split( , expand=True) # 根据一列生成两列
print(df[df.city.str.contains("Zh")]) # 是否包含某个关键字
print(df.dropna(axis=0, how="any", subset=["city", "sex"])) # thresh=3,会在一行/列中至少有 3 个非空值时将其保留。
df.age.fillna(0)
print(df.replace({"age": 40, "birth": pd.Timestamp("1978-08-08")}, np.nan)) # 将age列为40的替换成nan,将birth列为1978-08-08的替换成nan
print(df.city.replace(r\s+, np.nan, regex=True))

 

 

pandas 常用方法使用示例

原文:https://www.cnblogs.com/testzcy/p/12077820.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!