Python数据操作汇总

更新时间:2020-06-03 13:47:19点击次数:257次
创建dataframe
df=pd.DataFrame([[list1],[list2]...].T,index=['list1','list2'])

dataframe 改变列名
方法一

df.columns=['names','scores']

方法二 reindex以及reindex_like
index是行 columns是列

df.reindex(index=['c', 'f', 'b'], columns=['three', 'two', 'one']) 
df.reindex(['c', 'f', 'b'], axis='index')
df.reindex_like(df2)

方法三 rename

movies_df.rename(columns={
        'Runtime (Minutes)': 'Runtime', 
        'Revenue (Millions)': 'Revenue_millions'
    }, inplace=True)

df.rename(columns={'one': 'foo', 'two': 'bar'},
          index={'a': 'apple', 'b': 'banana', 'd': 'durian'})

dataframe 排序
df.sort_values(by=['list1','list2'],ascending=True)

df.sort_values(by="grade") 

列表推导式
%整除,zip函数的使用

[x for x in range(1.8) if x%2==0]

a={x:y for x,y in zip(range(1,7),'abcdef')}

重复repeat
ls=[1,2,3,4]
ls*2 # 方法一
sorted(ls*2)
np.repeat(ls,2) #方法二

查看dataframe变量信息
movies_df.info()

查看dataframe维度
movies_df.shape

dataframe去掉重复
temp_df =temp_df.drop_duplicates(inplace=True,keep=False)

dataframe描述
movies_df['genre'].describe()

dataframe按列计数
movies_df['genre'].value_counts()

dataframe切片操作
字典不可以切片 需要自取

df[0:3] #选择行
df["A"] #选择列
df.loc  #selection by label
df.iloc #selection by position
df.at   #快速选择
df.iat

根据条件判断进行切片选择

df[df > 0] 
df[df.A > 0]

isin判断 %in%
isin

df2[df2['E'].isin(['two', 'four'])] 

movies_df[movies_df['director'].isin(['Christopher Nolan', 'Ridley Scott'])].head()

根据isin取反

~movies_df['director'].isin(['Christopher Nolan', 'Ridley Scott'])

赋随机值
df.loc[:, 'D'] = np.random.randint(0, 7, size=10)

根据条件在数字前加负号
df2[df2 > 0] = -df2

去掉缺失值
df1.dropna(how='any') 

apply的lambda操作
df.apply(lambda x: x.max() - x.min()) lambda x:x if/for....

movies_df["rating_category"] = movies_df["rating"].apply(lambda x: 'good' if x >= 8.0 else 'bad')

dataframe的竖直拼接rbind操作
df.append(s, ignore_index=True)   #方法一
pieces = [df[:3], df[3:7], df[7:]] #方法二
pd.concat(pieces)

mergy 合并
pd.merge(left, right, on='key') 

类似aggregate的分类合计
df.groupby(['A', 'B']).sum()   

dataframe多列合并为一列 stack操作
stacked = df2.stack()  

python pivot_table 数据透视表
pd.pivot_table(df, values=‘D’, index=[‘A’, ‘B’], columns=[‘C’])

python 改变变量类型 astype
df["grade"] = df["raw_grade"].astype("category")   # as.factor
dft[['a', 'b']] = dft[['a', 'b']].astype(np.uint8)

dataframe删除列 drop
df.drop(['a', 'd'], axis=0)  

dataframe删除行 参考dataframe切片操作

计算dataframe相关系数corelation
movies_df.corr()

多重判断选择 或判断 操作or %in%
movies_df[(movies_df['director'] == 'Christopher Nolan') | (movies_df['director'] == 'Ridley Scott')].head() 

返回判断索引 which where操作
方法一
a = df[(df.BoolCol==3)&(df.attr==22)].index.tolist()
df['names'].tolist().index('random') #返回第一个
方法二
np.where()
np.where(df['names']=='random') #返回所有

方法三 索引切片
df.loc[df['names']=='random','scores']

判断索引 根据值比较大小
vframe.scores>float(vframe.loc[vframe['names']=='random','scores'])
vframe.loc[vframe.scores>float(vframe.loc[vframe['names']=='random','scores']),'names']
df.a>df.a[df.b==1].iloc[0]

list to pandas series
x_label_update=pd.Series(x_label_update)

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息