pandas - pd.DataFrame()的基本操作

发布时间 2023-08-04 16:22:53作者: 徐俊112

数据

import pandas as pd

data = [
    {'DEPT_NAME': '苏州市', '项目类型': '0', '已经安装': 385, '确定安装': 64, '预计安装': 422, '省份': '江苏省'},
    {'DEPT_NAME': '苏州市', '项目类型': '1', '已经安装': 8, '确定安装': 11, '预计安装': 23, '省份': '江苏省'},
    {'DEPT_NAME': '德阳市', '项目类型': '0', '已经安装': 18, '确定安装': 20, '预计安装': 20, '省份': '四川省'},
    {'DEPT_NAME': '南通市', '项目类型': '0', '已经安装': 6, '确定安装': 6, '预计安装': 7, '省份': '江苏省'},
    {'DEPT_NAME': '常州市', '项目类型': '0', '已经安装': 12, '确定安装': 13, '预计安装': 13, '省份': '江苏省'},
    {'DEPT_NAME': '常州市', '项目类型': '0', '已经安装': 3, '确定安装': 3, '预计安装': 3, '省份': '江苏省'},
    {'DEPT_NAME': '苏州市', '项目类型': '0', '已经安装': 1, '确定安装': 1, '预计安装': 1, '省份': '江苏省'},
    {'DEPT_NAME': '成都市', '项目类型': '1', '已经安装': 26, '确定安装': 11, '预计安装': 29, '省份': '四川省'},
    {'DEPT_NAME': '苏州市', '项目类型': '1', '已经安装': 23, '确定安装': 7, '预计安装': 57, '省份': '江苏省'},
    {'DEPT_NAME': '浙江省', '项目类型': '0', '已经安装': 14, '确定安装': 14, '预计安装': 14, '省份': '浙江省'},
    {'DEPT_NAME': '苏州市', '项目类型': '2', '已经安装': 0, '确定安装': 2, '预计安装': 6, '省份': '江苏省'}
]

# 将数据转换为数据框
df = pd.DataFrame(data)

 

1.想在添加一列数据

df['NAME'] = ('')  # 默认添加到最后
print(df)

 

2.想对数据进行操作:加减乘除 ,并把数据保存在数据框架中(df)

# 将数据转换为数据框
df = pd.DataFrame(data)
# 加
df[''] = (df['已经安装'] + df['确定安装'])
# 减
df[''] = (df['已经安装'] - df['确定安装'])
# 乘
df[''] = (df['已经安装'] * df['确定安装'])
# 除
df[''] = (df['已经安装'] / df['确定安装'])*100
# 转换为 % 格式
df['百分比'] = df[''].apply(lambda x: "{:.2f}%".format(x))

print(df)

 

 

3. df.groupby()函数

pandas中,数据表就是DataFrame对象,分组就是groupby方法。将DataFrame中所有行按照一列或多列来划分,分为多个组,列值相同的在同一组,列值不同的在不同组。

分组后,就得到一个groupby对象,代表着已经被分开的各个组。后续所有的动作,比如计数,求平均值等,都是针对这个对象,也就是都是针对各个组。即在每个组组内进行计数,求平均值等

import pandas as pd

data = [
    {'DEPT_NAME': '苏州市', '项目类型': '0', '已经安装': 385, '确定安装': 64, '预计安装': 422, '省份': '江苏省'},
    {'DEPT_NAME': '苏州市', '项目类型': '1', '已经安装': 8, '确定安装': 11, '预计安装': 23, '省份': '江苏省'},
    {'DEPT_NAME': '德阳市', '项目类型': '0', '已经安装': 18, '确定安装': 20, '预计安装': 20, '省份': '四川省'},
    {'DEPT_NAME': '南通市', '项目类型': '0', '已经安装': 6, '确定安装': 6, '预计安装': 7, '省份': '江苏省'},
    {'DEPT_NAME': '常州市', '项目类型': '0', '已经安装': 12, '确定安装': 13, '预计安装': 13, '省份': '江苏省'},
    {'DEPT_NAME': '常州市', '项目类型': '0', '已经安装': 3, '确定安装': 3, '预计安装': 3, '省份': '江苏省'},
    {'DEPT_NAME': '苏州市', '项目类型': '0', '已经安装': 1, '确定安装': 1, '预计安装': 1, '省份': '江苏省'},
    {'DEPT_NAME': '成都市', '项目类型': '1', '已经安装': 26, '确定安装': 11, '预计安装': 29, '省份': '四川省'},
    {'DEPT_NAME': '苏州市', '项目类型': '1', '已经安装': 23, '确定安装': 7, '预计安装': 57, '省份': '江苏省'},
    {'DEPT_NAME': '浙江省', '项目类型': '0', '已经安装': 14, '确定安装': 14, '预计安装': 14, '省份': '浙江省'},
    {'DEPT_NAME': '苏州市', '项目类型': '2', '已经安装': 0, '确定安装': 2, '预计安装': 6, '省份': '江苏省'}
]

# 将数据转换为数据框
df = pd.DataFrame(data)
# 进行分组操作。
单条件: df.groupby('省份') 单条件不用[]
多个条件: df.groupby(['省份','DEPT_NAME']) # 多个条件并别关系
grouped = df.groupby(['省份', 'DEPT_NAME']) 
for province, group in grouped:
  print(group)

后续所有的动作,比如计数,求平均值等,都是针对这个对象,也就是都是针对各个组。即在每个组组内进行计数,求和等

 

4.agg()函数

result1 = df1.groupby('省份').agg({'DEPT_NAME': 'count', '预计安装': 'sum', '确定安装': 'sum', '已经安装': 'sum'}).reset_index()  # 把需要计算的的列和运算方法,放在{'key1':'value2','key2';'value2'}中
 'count'  # 统计
 'sum'  # 求和
后续待补充

修改数据列的列名字:

columns
result1.columns = ['1', '2', '3', '4', '5']  # 数据中有多少列就需要准备多少个名字,不然会报错

import pandas as pd

data = [
    {'DEPT_NAME': '苏州市', '项目类型': '0', '已经安装': 385, '确定安装': 64, '预计安装': 422, '省份': '江苏省'},
    {'DEPT_NAME': '苏州市', '项目类型': '1', '已经安装': 8, '确定安装': 11, '预计安装': 23, '省份': '江苏省'},
    {'DEPT_NAME': '德阳市', '项目类型': '0', '已经安装': 18, '确定安装': 20, '预计安装': 20, '省份': '四川省'},
    {'DEPT_NAME': '南通市', '项目类型': '0', '已经安装': 6, '确定安装': 6, '预计安装': 7, '省份': '江苏省'},
    {'DEPT_NAME': '常州市', '项目类型': '0', '已经安装': 12, '确定安装': 13, '预计安装': 13, '省份': '江苏省'},
    {'DEPT_NAME': '常州市', '项目类型': '0', '已经安装': 3, '确定安装': 3, '预计安装': 3, '省份': '江苏省'},
    {'DEPT_NAME': '苏州市', '项目类型': '0', '已经安装': 1, '确定安装': 1, '预计安装': 1, '省份': '江苏省'},
    {'DEPT_NAME': '成都市', '项目类型': '1', '已经安装': 26, '确定安装': 11, '预计安装': 29, '省份': '四川省'},
    {'DEPT_NAME': '苏州市', '项目类型': '1', '已经安装': 23, '确定安装': 7, '预计安装': 57, '省份': '江苏省'},
    {'DEPT_NAME': '浙江省', '项目类型': '0', '已经安装': 14, '确定安装': 14, '预计安装': 14, '省份': '浙江省'},
    {'DEPT_NAME': '苏州市', '项目类型': '2', '已经安装': 0, '确定安装': 2, '预计安装': 6, '省份': '江苏省'}
]

# 将数据转换为数据框
df1 = pd.DataFrame(data)
# df1.columns = ['1', '2', '3', '4', '5', '6']
# print(df1)