Pandas基本操作

从字典创建DataFrame

import pandas as pd
dict={'name':['jack','rose','tracy'],'age':[25,19,19],'city':['北京','上海','深圳']}
df=pd.DataFrame(dict)

1、数据转化成列表

df['age'].to_list()

 2、打印数据表的大小和基本信息

df.shape

df.describe()

df.info()df.info()

3、更改某一列的名字

df.rename(columns={"age":"年龄"},inplace=True)

4、查看最后5行,删除某一行

df.tail(5)

#删除最后一行

df.drop(len(df)-1,inplace=True)

 5、删除某一列

df.drop(columns='成交额',inplace=True)
df.pop('成交额')
del df['成交额']

6、添加新行

#添加一行新的数据

row={'name':'rose','age':'30'}
df=df.append(row,ignore_index=True)

df.append(df.iloc(i))

7、将两列数据合并

df['new']=df[]+df[]
df['new']=df[].map(str)+df[]

8、将两行数据合并

注意axis= 参数,1表示横向合并,默认纵向合并

pd.concat([df[0:1],df[-2:-1]])


#将两列数据合并,两种方法

df1= pd.DataFrame(pd.Series(np.random.randint(1, 10,20)))
df2=pd.DataFrame(random.randint(1,10)for x in range(20))
df1['2']=df2
df1.columns=['1','3']
print(df1)


df1=pd.concat([df1,df2],axis=1)
print(df1)

9、排序


#对某一列排序

df.sort_values(by=['column_name'], ascending=[True/False])

10、设置索引列

 df.set_index('column_name')

 11、换列的位置

 使用了 pop 方法

删除 "age" 列并直接将其值赋给 temp,然后使用了 insert 方法来将 "age" 列添加回 DataFrame 的最前面

temp = df.pop('age')
df.insert(0, 'age', temp)
print(df)

 根据列的序号,重新排列

list = df.columns[[x for x in range(len("age")-1,0,-1)]]
df=df[list]
print(df)

 8、找出最大值,结合筛选可定位最大值所在行

print(df['age'].max())
print(df['age'].mean())
print(df['age'].min())

df=df[df['age']==df['age'].max()]

9、去除重复值

df=df.drop_duplicates('age')

10、缺失值填充,上下平均值

df['age'].fillna(df['age'].interolate)

11、 统计名字的长度,用map和lambda

df['len_str']=df['name'].map(lambda x:len(x))
print(df)

print结果:
    name  age city  len_str
0   jack   25   北京        4
1   rose   19   上海        4
2  tracy   19   深圳        5

12、groupby() ,聚合

import pandas as pd  
  
# 创建一个示例 DataFrame  
data = {'名字': ['Alice', 'Bob', 'Alice', 'Bob', 'Charlie'],  
        '数值': [10, 20, 30, 40, 50]}  
df = pd.DataFrame(data)  
  
# 按 '名字' 列进行分组,并计算平均值  
result = df.groupby('名字').mean()  
  
print(result)


名字  数值  
Alice   25.0  
 Bob   30.0  
Charlie 50.0

 13.pd.cut和groupby对某一列数据分类

DataFrame.cut(column, bins, right=True, labels=None, retbins=False, precision=3, duplicates='raise')


bins=[0,10,60,80]
group_name=['young','middle','old']
df['new_col']=pd.cut(df['age'],bins,labels=group_name)

or

df['new_col']=df['age'].cut(bins,labels=group_name)

 14、df.loc/df.iloc/df[].at[]

#访问第三行第三列的数据
df.iloc[2,2]

df.loc[]

#访问age列第三行的数据,注意和df.iloc的对比

df['age'].at[2]

15、转化日期格式
​​​​

df.iloc[1,2]=df.iloc[1.2].to_pydatetime().strftime('%m-%d')

from datetime import datetime  
  
# 原始日期  
date_str = '2020-4-26'  
  
# 将字符串转化为日期  
date = datetime.strptime(date_str, '%Y-%m-%d')  
  
# 将日期转化为你需要的格式  
formatted_date = date.strftime('%m-%d')  
  
print(formatted_date)  # 输出04-26

 随机生成一个dataframe,两种写法

用np.random.randint可以赋予三个参数

df1 = pd.DataFrame(pd.Series(np.random.randint(1, 10,20)))
df2 = pd.DataFrame(random.randint(1,10)for x in range(20))

 其他

df.isnull().values.any()   #查找是否存在缺失值

df['age'].astype(np.float64)   # 强制转化数据类型

len(df[df['age']>30])  #年龄大于30的个数,将age列大于30的构成一个新的df,统计len

df.education.value_counts()   # 查看education列各个类别出现的次数

df['education'].nunique()   #查看education列有几种不同的标签

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值