python数据框排序_python-在pandas数据框中对行进行排序并获取...

一种使用基础数组数据专注于性能的方法是-

a = df.values

c = df.columns

idx = a.argsort(1)[:,::-1]

vals = a[np.arange(idx.shape[0])[:,None], idx]

IDs = c[idx]

names_vals = ['Max'+str(i+1) for i in range(a.shape[1])]

names_IDs = ['Col_Max'+str(i+1) for i in range(a.shape[1])]

df_vals = pd.DataFrame(vals, columns=names_vals)

df_IDs = pd.DataFrame(IDs, columns=names_IDs)

df_out = pd.concat([df, df_vals, df_IDs], axis=1)

样本输入,输出-

In [40]: df

Out[40]:

A B C D E

0 23 12.0 1 9 123.0

1 24 33.0 33 343 33.0

2 55 0.2 66 4 2.2

3 77 44.0 44 64 42.0

4 33 23.5 5 24 2.0

5 66 66.0 62 63 99.0

In [41]: df_out

Out[41]:

A B C D E Max1 Max2 Max3 Max4 Max5 Col_Max1 Col_Max2 \n0 23 12.0 1 9 123.0 123.0 23.0 12.0 9.0 1.0 E A

1 24 33.0 33 343 33.0 343.0 33.0 33.0 33.0 24.0 D E

2 55 0.2 66 4 2.2 66.0 55.0 4.0 2.2 0.2 C A

3 77 44.0 44 64 42.0 77.0 64.0 44.0 44.0 42.0 A D

4 33 23.5 5 24 2.0 33.0 24.0 23.5 5.0 2.0 A D

5 66 66.0 62 63 99.0 99.0 66.0 66.0 63.0 62.0 E B

Col_Max3 Col_Max4 Col_Max5

0 B D C

1 C B A

2 D E B

3 C B E

4 B C E

5 A D C

如果您需要按顺序输入值和ID,我们需要在此修改最后几步-

df0 = pd.DataFrame(np.dstack((vals, IDs)).reshape(a.shape[0],-1))

df0.columns = np.vstack((names_vals, names_IDs)).T.ravel()

df_out = pd.concat([df, df0], axis=1)

样本输出-

In [62]: df_out

Out[62]:

A B C D E Max1 Col_Max1 Max2 Col_Max2 Max3 Col_Max3 Max4 \n0 23 12.0 1 9 123.0 123 E 23 A 12 B 9

1 24 33.0 33 343 33.0 343 D 33 E 33 C 33

2 55 0.2 66 4 2.2 66 C 55 A 4 D 2.2

3 77 44.0 44 64 42.0 77 A 64 D 44 C 44

4 33 23.5 5 24 2.0 33 A 24 D 23.5 B 5

5 66 66.0 62 63 99.0 99 E 66 B 66 A 63

Col_Max4 Max5 Col_Max5

0 D 1 C

1 B 24 A

2 E 0.2 B

3 B 42 E

4 C 2 E

5 D 62 C

好的,我们可以采用Python中的pandas和matplotlib库进营业数据分析。下面我介绍一下具体的实现步骤。 首先,我们需要准备一份销售数据的CSV文件,例如以下示例数据: ``` 日期,商品名称,销售额,销售量 2021-01-01,商品A,1000,10 2021-01-01,商品B,1500,15 2021-01-02,商品A,1200,12 2021-01-02,商品B,1800,18 2021-01-03,商品A,1300,13 2021-01-03,商品B,1900,19 ``` 然后,我们可以使用pandas库将CSV文件读数据框中,一些数据清洗和处理。代码如下: ```python import pandas as pd # 读CSV文件到数据框 df = pd.read_csv('sales_data.csv') # 将日期列转换为datetime类型 df['日期'] = pd.to_datetime(df['日期']) # 添加月份列 df['月份'] = df['日期'].dt.month # 添加销售额/销售量单价列 df['销售额单价'] = df['销售额'] / df['销售量'] df['销售量单价'] = df['销售量'] / df['销售额'] ``` 接着,我们可以使用pandas的聚合函数对数据进汇总和统计。例如,我们可以按月份汇总销售额和销售量,代码如下: ```python # 按月份汇总销售额和销售量 df_monthly = df.groupby('月份').sum()[['销售额', '销售量']] ``` 然后,我们可以使用matplotlib库绘制图表,例如绘制销售额和销售量的折线图,代码如下: ```python import matplotlib.pyplot as plt # 绘制销售额和销售量的折线图 plt.plot(df_monthly.index, df_monthly['销售额'], label='销售额') plt.plot(df_monthly.index, df_monthly['销售量'], label='销售量') # 添加图表标题和标签 plt.title('销售额和销售量月度趋势') plt.xlabel('月份') plt.ylabel('金额/数量') plt.legend() # 显示图表 plt.show() ``` 最后,我们可以通过对数据框筛选和排序,来查找一些有用的信息。例如,我们可以查找销售额单价最高的商品,代码如下: ```python # 查找销售额单价最高的商品 df_top = df.sort_values('销售额单价', ascending=False).head(1) # 输出商品名称和销售额单价 print(f"销售额单价最高的商品是{df_top.iloc[0]['商品名称']}, 单价为{df_top.iloc[0]['销售额单价']:.2f}") ``` 以上就是一个简单的营业数据分析案例,希望对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值