工作,datafram相关

1,loc,iloc,iat

python数据分析之pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[] - 奥辰 - 博客园

 2,遍历datafram

如何优雅的遍历dataframe_舞风炫钺的博客-CSDN博客

3,Dataframe 根据某一列数据的值修改另一列的值

1,方法一loc
data_frame.loc[ (data_frame["列1"] != 0),"列2" ] = -99999    

2,方法二
data_frame['列1'][data_frame['列2']!=0] = -99999;

3,方法三np.where
tt['gender'] =np.where(tt['isMarried']=='yes',-9999,tt['gender'])

4,Dataframe 根据某多列数据的值修改另一列的值

如果多列条件,
列a>100,d是-9999
列b<列c,d是-8888

5,排序,降序是FALSE

# 两个字段都降序
df.sort_values(by=["aqiLevel","bWendu"],ascending = False)

6,获取dataframe的列三种方法

#获取dataframe的列三种方法
[column for column in df]
[a for a in df]


df.columns.tolist()

list(df.columns)

7,删除dataframe列,修改列名

import pandas as pd
a = pd.DataFrame([[1,2,3],
                  [3,1,3],
                  [1,2,1]])

labels = ['a', 'b', 'c']
#a = pd.DataFrame(a, index=labels,columns=labels)

添加列名
a.columns = labels

修改列名
df.rename(columns={'原列名':'新列名'},inplace=True)

删除一列
a.drop('a',axis = 1,inplace = True) #axis参数默认为0
删除多列
a.drop(columns=['a','b'],axis=1,inplace = True)
a.head()

8,datafram去重

df.drop_duplicates(subset=None, keep='first', inplace=False)

subset:column label or sequence of labels, optional ,用来指定特定的列,默认所有列
keep:{‘first’, ‘last’, False}, default ‘first’ ,删除重复项并保留第一次出现的项
inplace:boolean, default False ,是否直接修改原 dataframe

9,保存dataframe

10,查看datafram中字段类型

offline['score'].dtypes
offline.dtypes

11,两个dataframe拼接不同顺序字段

import pandas as pd
import numpy as np

data = {'name': ['Joe', 'Mike', 'Jack', 'Rose', 'David', 'Marry', 'Wansi', 'Sidy', 'Jason', 'Even'],

        'age': [25, 32, 18, np.nan, 15, 20, 41, np.nan, 37, 32],

        'gender': [1, 0, 1, 1, 0, 1, 0, 0, 1, 0],

        'isMarried': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']}

labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
df = pd.DataFrame(data, index=labels)

fea1=['age','name']
fea2=['age','name','gender']
fea3=['gender','age','name']

df1 = df[fea1]
df2 = df[fea2]
df3 = df[fea3]

df33 = pd.concat([df1, df2], axis=0)
df333 = pd.concat([df1, df3], axis=0)

#实现变换字段顺序
fea=['age','name']
df3333 = df333[fea]

 12,dataframe统计元素数量

value_counts()是Series拥有的方法,一般在DataFrame中使用时,需要指定对哪一列或行使用

import pandas as pd
a = pd.DataFrame([[1,2,3],
                  [3,1,3],
                  [1,2,1]])
result = a.apply(pd.value_counts)
print(result)

那么,如果列表项统计,如何将列表变成dataframe?

import pandas as pd
from pandas.core.frame import DataFrame
a = [1, 2, 3, 1, 1, 2,2,2]
a2 = DataFrame(a)
a2.value_counts()

13,字典如何转dataframe?

两种方法:

第一种:直接转
df = pd.DataFrame(d1)

from pandas.core.frame import DataFrame
a=[1,2,3,4]#列表a
b=[5,6,7,8]#列表b
c={"a" : a,
 "b" : b}#将列表a,b转换成字典
data=DataFrame(c)#将字典转换成为数据框
print(data)

第二种:使用函数可以实现横向的转换
pd.DataFrame.from_dict(d1, columns=['A', 'B'], orient='index')

 可参考博客

 jjj熊猫DataFrame from_dict()–字典到DataFrame_从零开始的教程世界-CSDN博客z

14,datafram如何变字典?

Dataframe与字典(dict)之间的转换 - Jony-2018 - 博客园

15,datafram中字段转换数据类型

16,多行转一行

SELECT
id,
group_concat(distinct(class),',') AS refuse
FROM sample
GROUP BY id

17, 一行转换多行

SELECT
IDNUMBER,
id,
ss.class
FROM sample
LATERAL VIEW explode(split(class,",")) ss AS class

18,df.shape

df.shape[0]求出df的行数

df.shape[1]求出df的列数

19,查看dataframe的列类型

ccc = online_score3.dtypes
for i in ccc.index: # 依次选取Series的各个key
    print(i,'   ',ccc[i]) # 这里的c[i]的使用,在Series中可以使用Series[key]的形式取出对应的value

20,处理变量名的连接

fea = ['apply_id','name','dt','created_at','score'] + model2.feature_name_

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DataFrame的query方法是用来通过布尔表达式对DataFrame的列进行查询的。\[1\] 该方法可以根据给定的表达式返回满足条件的行。例如,如果我们有一个DataFrame df,我们可以使用query方法来选择df中'A'列大于0且'B'列小于10的行,表达式可以写为`df.query('A > 0 and B < 10')`。这将返回满足条件的行。query方法可以方便地进行复杂的条件查询,使得数据筛选更加灵活和简单。\[1\] 除了query方法,DataFrame还有其他一些属性和方法可以用来对数据进行索引和查询,如at、iat、loc和iloc。这些属性和方法可以根据行索引、列索引或标签来获取指定位置的数据。\[2\]\[3\] 通过熟练掌握这些属性和方法,我们可以更加灵活地对DataFrame进行数据操作和查询。 #### 引用[.reference_title] - *1* [【pandas之DataFrame相关函数】query()函数](https://blog.csdn.net/weixin_42821041/article/details/125447802)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [重学pandas(一)之读取数据DataFram的简单使用](https://blog.csdn.net/weixin_44112790/article/details/104340033)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值