(1)单列
mysql:select * from uds.amz_daily_sales where purchase_date>='2021-04-01' order by asin desc;
pandas:
data.sort_values(by='asin',ascending=False);
data.sort_values(by='asin',ascending=False,inplace=True);
data.sort_values(by='asin',ascending=False,na_position='first'); #NAN值放在首行
(2)多列
mysql:select * from uds.amz_daily_sales where purchase_date>='2021-04-01' order by sales_channel_id,asin desc, sales_channel asc , purchase_date asc;
pandas:data.sort_values(by=['sales_channel_id','asin','sales_channel','purchase_date'],ascending=[True,False,True,True]);
#去除重复的行
df.drop_duplicates()
#按单列去重
df.drop_duplicates(subset=['brand'],keep='last', inplace=True)
#按多列去重
df.drop_duplicates(subset=['brand', 'style'], keep='last', inplace=True)
#实现按qty排序
data.sort_values(by='qty',axis=0,ascending=False)
#实现按asin与qty排序,降序
data.sort_values(by=['asin','qty'],axis=0,ascending=False)
#依据第一列排序,并将该列空值放在首位
df.sort_values(by=['col1'],na_position='first')
#依据第二、三列,数值降序排序
df.sort_values(by=['col2','col3'],ascending=False)
df.sort_values(by=['col2','col3'],ascending=[False,True])
#根据第一列中数值排序,按降序排列,并替换原数据
df.sort_values(by=['col1'],ascending=False,inplace=True,na_position='first')
4.分组排序
df = pd.DataFrame(
{'brand': ['Yum Yum', 'Yum Yum','Yum Yum', 'Yum Yum','Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie','Indomie', 'Indomie', 'Indomie']
,'style': ['cup1', 'cup2', 'cup1','cup1', 'cup2', 'cup1', 'pack', 'pack','pack','back','back','back']
,'rating': [4, 4, 2, 1, 6, 7 ,10, 10, 17, 15, 5, 9]
,'orders': [10, 12, 22, 21, 16, 71 ,110, 210, 117, 215, 15, 99]
#1 按单列分组再按单列排序号
#按rating升序排列
df['ranking'] = df['rating'].groupby(df['brand']).rank(ascending=False)
#按rating降序排列,method='first'当组内rating有相同值时,早出现的那个排序在前
df['ranking'] = df['rating'].groupby(df['brand']).rank(ascending=False,method='first')
按单列分组再按多列排序号
df.sort_values(by=['brand','rating'],ascending=[True,False],inplace=True)
df['ranking'] = df['rating'].groupby(df['brand']).rank(ascending=False,method='first')
#2.按多列分组再按单列排序号
df2 = pd.DataFrame()
for name,group in df.groupby(['brand','style']):
group['ranking'] = group['rating'].rank(ascending=False,method='first')
print(group)
df2 = pd.concat([df2,group],axis=0)
按多列分组再按多列排序号
df2 = pd.DataFrame()
for name,group in df.groupby(['brand','style']):
group.sort_values(by=['rating','orders'],ascending=[False,False],inplace=True)
group['ranking'] = group['rating'].rank(ascending=False,method='first')
print(group)
df2 = pd.concat([df2,group],axis=0)
#3.按多列分组再按单列排序号
df['gp'] = df['brand']+df['style']
df['ranking'] = df['rating'].groupby(df['gp']).rank(ascending=False,method='first')
header=['brand','style', 'rating','ranking']
df=df[header]
按多列分组再按多列排序号
df['gp'] = df['brand']+df['style']
df.sort_values(by=['gp','rating','orders'],ascending=[True,False,False],inplace=True)
df['ranking'] = df['rating'].groupby(df['gp']).rank(ascending=False,method='first')
header=['brand','style', 'rating','ranking','orders']
df=df[header]
5.vs mysql
(1)求表行数:df.shape
(2)求某列值去重后的行数:
#1 去重后求行数
df.drop_duplicates(subset=['brand'],inplace=True)
df.shape
#2 groupby后求行数
len(df.groupby(['brand','style']))
(3)分组排序取前2条
df['gp'] = df['brand']+df['style']
df.sort_values(['rating', 'orders'], ascending=[False, False]).groupby('gp').head(2)
6.分组统计之频数
(1) 统计df中brand列各值的出现次数
df['brand'].value_counts() #返回series
(2) 统计df中brand与style两列组合值出现次数
df['style'].groupby(df['brand']).value_counts()
准备dataset:import pandas as pdsql="select * from uds.amz_daily_sales where purchase_date>='2021-04-01' "data=pd.read_sql(sql=sql,con=db)1.排序(1)单列mysql:select * fromuds.amz_daily_saleswhere purchase_date>='2021-04-01' order b...
烧瓶熊猫数据框
简单的Flask项目,可将熊猫数据框加载到数据库中并在页面上显示信息。 Flask Pandas Dataframe是一个one-file项目,可以帮助初学者了解一些Flask基本概念:
创建一个简单的Flask
下载公共DF
创建一个SQLite数据库和一个表来保存信息
使用新的custom command熊猫加载到数据库中
在浏览器中可视化数据
$ # Clone sources
$ git clone https://github.com/app-generator/flask-pandas-dataframe.git
$ cd flask-pandas-dataframe
$ # Virtualenv modules installation (Unix based systems)
$ virtualenv env
$ source env/bin/
文章目录1. 生成dataframe2. 读取数据3. 增加:增加一列:增加一行:4. 删除:5. 更新:6. 显示:7. 筛选:7. 数据空处理:8. 数据连接:9. 其它:
总结一些python数据处理过程中常用的方法,我一般喜欢用dataframe做数据处理,所以一般会尽量转成pandas的dataframe格式。
1. 生成dataframe
pd.dataframe(list, c...
通过带有标签的列和索引,Pandas 使我们可以以一种所有人都能理解的方式来处理数据。它可以让我们毫不费力地从诸如 csv 类型的文件中导入数据。我们可以用它快速地对数据进行复杂的转换和过滤等操作。
pandas和 Numpy、Matplotlib 一起构成了一个 Python 数据探索和分析的强大基础。Scipy是同类型的库,感兴趣的可以进行了解。
本文记录和收集积累pandas的用法。
导入 ...
本篇文章主要介绍了Python数据分析Pandas Dataframe排序与去重操作:
1、DataFrame 的排序分为两种,一种是对索引进行排序,另一种是对值进行排序;
2、DataFrame 的去重主要针对单列或多列中的完全重复的项进行处理
一、Dataframe排序
1. 索引的排序
DataFrame 提供了sort_index()方法来进行索引的排序,主要考虑以下几个可选输入项:
可以使用 value_counts 函数来统计每个不同数据在数据列中出现的次数。 例如,假设有一个名为 df 的 DataFrame,其中包含一列名为 'col'。 要统计 'col' 列中各个不同数据的出现次数,可以使用以下代码:
counts = df['col'].value_counts()
此代码将返回一个由各个数据和它们在 'col' 列中出现的次数组成的 Series。 例如,假设...
方法一、主要思路:
1. 采用drop_duplicates对数据去两次重,一次将重复数据保留一个(keep='first),另一次将重复数据全部去除(keep=False);
2. 合并两者,并去重,得到重复的字段;
3、由重复的字段,得到原数据的重复所有数据,并进行排序,便于比较数据的异同;
df = pd.DataFrame({
'group': [1, 1, 2, 3, 3, 3, 4],
'param': ['a', 'a', 'b', np.nan, 'a', 'a', np.nan]
print(df)
# group param
# 0 1 a
在 Pandas 中使用 groupby 函数可以对数据进行分组。可以指定一个或多个列作为分组键,然后进行聚合操作。
如果要删除分组后重复的行,可以在 groupby 函数后使用 drop_duplicates() 方法。
import pandas as pd
df = pd.DataFrame({'A': ['foo', 'bar', 'baz'] * 3,
'B': [1, 2, 3] * 3,
'C': [4, 5, 6] * 3})
# 首先按 'A' 和 'B' 分组
grouped = df.groupby(['A', 'B']).sum()
# 删除分组后重复的行
grouped = grouped.drop_duplicates()
这将会返回一个新的 dataframe,里面没有重复行。