Python_pandas处理数据格式和统计频次
2022/5/10 11:04:35
本文主要是介绍Python_pandas处理数据格式和统计频次,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Pandas 数据处理
Pandas 数据预处理--格式问题
知识点说明
读入和写出 结构化数据--处理-清洗-变换 enumerate zip sorted reversed import numpy as np Numpy -- ndarray --数组计算框架 np.array -- 向量化运算 数组的切片、数组子集-视图--对视图的修改会影响到原数组 显式的拷贝--.copy() 切片--视图 整数索引 布尔索引 -- 整数索引-整数数组(传递所需的列表或数组)--将数据复制到新的数组 --同质型数值类 import pandas as pd pandas Serirs DataFrame Serirs--值序列(value)和索引(index) 索引name loc切片的行索引和列索引的索引名, iloc中传入需要切片的行索引和列索引的数值索引范围 左闭右开的(包含起始值,不包含结束值) 整数索引 布尔索引 name索引 轴-- axis 0为行向 1为列向 拼接和合并 pd.concat() 行列拼接 pd.merge() 索引-列-关联 重构和透视 statck unstack pd.piovt pd.melt 分组 groupby 分组聚合--聚合函数和自定义聚合函数aggregate 其他 cut qcut pivot_table pd.crosstable 时间序列 shift
代码示例
import os import sys import pandas as pd if __name__ == '__main__': input_dir_nm= r"F:\testdata\test.txt" out_rst_file = r"F:\testdata\test-stat.txt" #input_dir_nm = sys.argv[1] ## 读入数据 res = pd.read_csv(input_dir_nm,header=None,sep=',',names=['student_id','subject','score']) print(res.info()) ## 分组统计 res_cnt = res.groupby(['student_id','subject'],as_index=False).size() print(res_cnt) ## 数据形式变换 res_cnt = pd.pivot(res_cnt, index="student_id", columns="subject", values="size") ## 重命名和填充 res_cnt_df = res_cnt.rename_axis(columns=None).reset_index().fillna(0) print(res_cnt_df) # 一列分为多列 key_id_df = res_cnt_df['student_id'].str.split('/', expand=True) # 选取其中两列,并重新命名-将旧列名称指定为键,将新名称指定为值 key_id_df = key_id_df.iloc[:, [4,6]].rename(columns={4:'base_nm',6:'age_id'}) print(key_id_df) # 两个dataframe 按照列合并-(df1,df2左右拼接) lst_f = pd.concat([key_id_df,res_cnt_df],axis=1) print(lst_f) ## 输出 lst_f.to_csv(out_rst_file,index=0) # res_cnt_df = res_cnt.set_index(["student_id", "subject"]) # two_level_index_series = res_cnt_df["size"] # result_df = two_level_index_series.unstack().rename_axis(columns=None).reset_index() # print(result_df)
使用传统的
使用 defaultdict 进行统计
代码示例
from collections import defaultdict def get_sig_stat(student_file): # d=defualt(),括号中的参数可选[int,set,list]中的一个 mark_labels = { 'chinese': 0, 'math': 0, 'history': 0, 'biology': 0, 'physics': 0, 'politics': 0, } pair_d = defaultdict(list) result = list() with open(student_file, encoding="utf-8") as f: for file_num, in_data in enumerate(f): in_data = in_data.split(",") #img_id = data[0].split("/")[-1].strip() img_id = in_data[0].strip() kind_type = in_data[1].strip() pair_d[img_id].append(kind_type) for unique_nm ,values in pair_d.items(): category_d = defaultdict(int) for kind_data in values: category_d[kind_data] +=1 for type_nm ,type_cnt in mark_labels.items(): if type_nm in category_d.keys() : mark_labels[type_nm]= category_d.get(type_nm) result.append((unique_nm,mark_labels)) return result if __name__ == '__main__': input_dir_nm= r"F:\testdata\test.txt" rd = get_sig_stat(input_dir_nm) for ad in rd: print(ad)
参考
pandas行转列、列转行、以及一行生成多行 http://www.manongjc.com/detail/14-njxofzmjxqmpvnq.html pandas取出某两列 https://blog.csdn.net/qq236237606/article/details/112320935 Python中的defaultdict方法 https://blog.csdn.net/weixin_44500833/article/details/104944980
这篇关于Python_pandas处理数据格式和统计频次的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-08有遇到过吗?同样的规则 Excel 中 比Python 结果大
- 2024-03-30开始python成长之路
- 2024-03-29python optparse
- 2024-03-29python map 函数
- 2024-03-20invalid format specifier python
- 2024-03-18pool.map python
- 2024-03-18threads in python
- 2024-03-14python Ai 应用开发基础训练,字符串,字典,文件
- 2024-03-13id3 algorithm python
- 2024-03-13sum array elements python