pandas常用代码

pandas常用代码

1.对某列的所有内容的出现次数计数

计数
biaoshi=df2[“biaoshi”].value_counts()
转为dataframe格式
biaoshiDF=biaoshi.to_frame()
索引重置
biaoshiDF=biaoshiDF.reset_index()

2.索引设置和重置

索引重置
data = data.reset_index()
设置索引
data = data.set_index([‘年份’])

3.dataframe修改列名

直接赋值
df.columns = [“xx”, “yy”]
对指定列修改名称,需要加上inplace=True
df.rename(columns={‘COLLECTTIME’:‘ds’},inplace=True)
df.rename(columns={‘VALUE’:‘y’},inplace=True)

4.Pandas Series转换为DataFrame

Series有一个to_frame()方法

5.提取某列符合某个条件的数据

单个条件
df2=df[df[‘speed’]!=‘无数据’]
多个条件:用括号和与或非
df[(df[‘Date’] != ‘null’) & (df[‘Date_received’] !=‘null’)]
f2=df[(df[‘hour’]>=7)&(df[‘hour’]<=9)]

6.读取与存储

import os
import glob
import pandas as pd
import numpy as np

读取
os.chdir(r’D:\文件目录\子目录’)
df=pd.read_csv(‘文件名.csv’)
存储
os.chdir(r’D:\文件目录\子目录’)
shuju=pd.DataFrame(df)
shuju.to_csv(‘文件名.csv’, mode=‘a’,encoding=‘utf-8-sig’)

7.转换某列的数据类型

这里将string类型的速度,转换为int类型的速度
df2[‘speed’]=df2[‘speed’].apply(lambda col:int(col))

8.获取某列,所包括的、不重复的子项

先转集合set:特点:1. 无序,2. 不重复。再转为有序的list:后进行遍历,拆分为每个站点的文件
roadnames=list(set(df[‘name’]))

9.排序

按by中的,依次排序
df2=df.sort_values(by=[‘name’,‘direction’,‘speed’,‘day’,‘hour’,‘min’])

10.去除重复

df3=df2.drop_duplicates(subset=[‘name’,‘direction’],keep=‘first’)

11.纵向合并一个目录下的所有文件

os.chdir() 方法用于改变当前工作目录到指定的路径。
os.getcwd() 查看当前工作目录
glob:用它可以查找符合特定规则的文件路径名。
2,查找文件只用到三个匹配符:"","?", “[]”。
3,"
“匹配0个或多个字符;”?“匹配单个字符;”[]"匹配指定范围内的字符,如:[0-9]匹配数字。
all_files=[i for i in glob.glob(’*.csv’)]:用glob找到目录下的所有csv文件
combined_files=pd.concat(pd.read_csv(f) for f in all_files) :用cancat读取并合并每个文件
combined_files.to_csv(‘combined_files.csv’,index=False,encoding=‘utf8’) :不要索引号

代码
os.chdir(r’D:\文件目录\子目录’)
all_files=[i for i in glob.glob(’*.csv’)]
combined_files=pd.concat(pd.read_csv(f) for f in all_files)
os.chdir(r’D:\文件目录\子目录’)
print(os.getcwd())
combined_files.to_csv(‘文件名.csv’,index=False,encoding=‘utf8’)

12.获得某个目录下的所有符合条件的文件

os.chdir(r’D:\gis\实验1’)
all_files=[i for i in glob.glob(’*.csv’)]
all_files

13.左右表merge连接

pd.merge( left, right, how=‘inner’, on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=(’_x’, ‘_y’), copy=True, indicator=False, validate=None,)

参数如下:

left:左侧的df;

right:右侧的df;

how:拼接形式,默认为“inner”,“inner”就是去交集拼接,“outer”是去并集拼接,“left”以左边df为基准拼接,“right”以右边为基准拼接;

on:以什么字段进行拼接,该字段必须在左边df和右边df都能找到;

left_on:左边df的拼接字段;

right_on:右边df的拼接字段;

left_index:如果为True,则以左边的拼接字段为标准;

sort:对拼接后的df进行排序;

suffixes:用于重叠列的字符串的后缀元组,一般取默认即可;

copy:从df对象里复制数据;

indicator:在输出的df后添加一个名为_merge的列

1.和pd.concat()不同,pd.merge()只能用于两个表的拼接,而且通过参数名称也能看出连接方向是左右拼接,一个左表一个右表,而且参数中没有指定拼接轴的参数,所以pd.merge()不能用于表的上下拼接。

2.参数how
outer:外连接:保留两个表的所有信息,拼接的时候遇到标签不能对齐的部分,用NAN进行填充:
left:左连接:保留所有左表的信息,把右表中主键与左表一致的信息拼接进来,标签不能对齐的部分,用NAN进行填充
right:右连接:保留所有右表的信息,把左表中主键与左表一致的信息拼接进来,标签不能对齐的部分,用NAN进行填充:

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值