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()