2019年7月10日 pandas中DataFrame的使用
pandas连接SQL server
import pymssql
import pandas as pd
conn = pymssql = (
host="",
port=1433,
user="",
password="",
database=""
)
df = pd.read_sql(sql,con=conn)
通过某列数据查找另一列的数据
total_sales = int(df[(df["地区"] == regional) & (df["商品编码"] == shop_code) & (df["卖家简称"] == sale_people)]["销售数量"])
给dataframe添加索引
df.reset_index(drop=True)
按条件取数据的索引
df.index[(df["score"]==5)&(df["name"]=="A")]# 结果为列表
修改索引和列名
df.rename(index={0:"A",1:"B"},columns={"n":"name","s":"sex"})
通过索引修改某一列下的数据
for i in index_list:
df.loc[i,"地区"] = df.loc[i,"国家"]
按条件查询数据
# 单个条件
df[df["地区"]=="智利"]
# 多个条件 & |
df[(df["地区"]=="智利")&(df["商品编号"]=="zs12341")]
分组求和
df1 = df.groupby(by=["商品编码","卖家简称","地区"])["销售数量"].sum().reset_index()
分组排序取前三
# 降序排列
groupby_sorted = df.sort_values(by=["地区","销售数量"],ascending=False).head(3)
apply的使用
import pandas as pd
df = pd.DataFrame([['A', 5, '2019-03-01 00:00:30'],
['A', 2, '2019-04-01 00:00:18'],
['A', 2, '2019-03-01 00:00:30'],
['B', 5, '2019-03-01 00:00:30'],
['B', 9, '2019-03-01 00:00:29']],
columns=['name', 'score', 'tm'])
print(df)
def f(data):
# print(data["score"])
if data["score"] > 5:
return 10
else:
return 5
pass
df["test"]=df.apply(f,axis=1)
"""
1、apply中传入的参数是df,是传入一个dataframe类型的数据。
2、axis=1,将函数应用到每一行数据中。
3、df["test"]中test可以,score也可以。
"""
合并dataframe
import pandas as pd
df3 = pd.merge(df1,df2,how="inner",on=["商品编码","卖家简称"])
将一个dataframe添加到另一个dataframe下面
# 1、追加后需要重新赋值给另一个变量 df1 = df.append(df) # 2、如果要操作df,需要重新设置一下索引 df2 = df1.reset_index(drop=True)
删除重复数据
df1 = df.drop_duplicates(keep="first",inplace=False)
保存dataframe数据到Excel中
writer = pd.ExcelWriter("./test.xlsx") df.to_excel(writer, "sheet1") writer.save()