首页 > 其他 > 详细

pandas进行数据处理——滴滴项目整理

时间:2021-02-03 23:19:19      阅读:24      评论:0      收藏:0      [点我收藏+]

(1)读取文件

df = pd.read_csv(rC:\Users\Administrator\Desktop\网约20年9月分时段订单数.csv)

"内部存在不同编码编码方式"
f = open(rG:\出租车分月\2020年\出租20年4月.csv,encoding=gbk, errors=ignore)
df = pd.read_csv(f)

"循环读取文件"
path = r"G:\出租车分月\2019年"
for filename in os.listdir(path):
    f = open(os.path.join(path,filename), encoding=gb18030, errors=ignore)
    df = pd.read_csv(f)
"读取txt文件"
df = pd.read_table(r‘D:\数据\罗师姐的数据\20180103.txt‘,sep = ‘,‘,encoding = ‘utf-8‘,header = None) #通过sep = ‘,‘设置分隔符 ,负责读取的数据只有一列

 

(2)处理时间数据

df[depTime] = pd.to_datetime(df.depTime,format = %d/%m/%Y %H:%M:%S)
#此时时间可以进行加减算法

"将时间转换为秒"
df4[WorkTime] = (df3-df2).dt.total_seconds()

 

(3)处理数据常用方法

"对一列数据求和"
df[driveMile].sum()   #对一列数据的值进行求和

"选取某列的某几个字符"
df2 = df[身份证号码].apply(lambda x:str(x)[6:10])

"提取某列不重复元素的个数"
res = df[carNo].unique()  #返回一个多维数组,ndarray类型

"统计某列每个元素出现的次数"
ser = df[carNo].value_counts()    #返回一个Series序列,索引为元素名称,可通过 .index获取索引

"统计dataframe数据的行数"
res = df[carNo].shape[0]

"转换某一列的数据类型"
res = df[carNo].astype(int)

"--------------对文件按照某一列进行分组-------------------"
df1 = df.groupby(carNo)    #返回一个group格式数据
"选取分组后的某一列"
df1 = df.groupby(oederTime_x)[carNo]    #返回一个SeriesGroupBy格式数据

"查看每组的列数"
res = df.groupby(carNo).size()

"查看每组某一列包含的不重复的数据"
res = df.groupby(carNo)[destTime].unique()

"分组后选取某一列进行求和"
df.groupby(carNo)[factPrice].sum()

"查看每组不重复元素的个数"  #代码来自‘分日车辆数(优化)‘
df1 = df.groupby(oederTime_x)[carNo].unique()
car_q = []
for i in range(0,len(df1)):
    car_q.append(len(df1[i]))
print(car_q)

"选取某组某列,对值进行求和并排序"  #代码来自‘巡游车收入统计(优化)‘
df_f[mile] = df.groupby(oederTime_x)[driveMile].sum().sort_index(ascending = True)

"根据某两列进行分组"
res = df.groupby([carNo,depTime])   #以列表的形式传入,先根据第一个分组,再根据第二个分组

 

(4)文件含异常数据处理

"删除某一列中的空值所在行"
df_q = df[depTime].dropna(axis = 0,how = any)   #axis = 1表示删除列

"将异常数据替换为NaN值"
res = []
for item in df[factPrice].values:
    try:
        res.append(float(item))
    except:
        res.append(np.nan)
df[Price] = pd.DataFrame(data = res)

"查看文件编码方式"
def get_encoding(file):
 with open(file,rb) as f:
  return chardet.detect(f.read())[encoding]

file_name= r"C:\Users\Administrator\Desktop\测试\ORDER_INFO11.csv"  #此处替换为你自己的文件路径
encoding = get_encoding(file_name)
print(encoding)

"根据每一行的编码方式进行读取文件"
# 获取文件编码类型
def get_encoding(file):
    # 二进制方式读取,获取字节数据,检测类型
    with open(file, rb) as f:
        return chardet.detect(f.read())[encoding]

data_path=数据集/week1.csv
df = pd.DataFrame()
encoding = get_encoding(data_path) # get_encoding函数在上文
f = open(data_path, encoding=encoding,errors=ignore)
data = pd.read_csv(f)
df = df.append(data)

 

(5)保存文件

df1.to_csv(r"C:\Users\chd\Desktop\出租19年1月.csv", index=False, header=0, mode=a)
#index = False 表示不保存行索引,header = 0 表示不保存列索引 ,mode = ‘a‘ 表示为追加写入形式

 

pandas进行数据处理——滴滴项目整理

原文:https://www.cnblogs.com/jgua/p/14369852.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!