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进行填充: