一、基础
- 新建Series
- 数据框架
维数 |
名称 |
描述 |
1 |
Series |
带标签的一维同构数组 |
2 |
DataFrame |
带标签的,大小可变的,二维异构表格 |
- 数据结构
index(索引)、column(列)、row(行)。
- 数据筛选
New_pd = New_pd.loc[New_pd['处理者名称'].str.contains('在线')] df = df[df['工单创建组']== 'D组在线'] df = df[df['工单创建组'].isin(['D组在线','金慧在线'])]
|
- 修改列
DF_dapan.rename(columns={'平均排队时长(s)':"平均排队时长"},inplace=True) del DF_dapan['平均排队时长'] DF_dapan= DF_dapan.drop('平均排队时长', 1) DF_dapan= DF_dapan.drop('平均排队时长',axis=1, inplace=True) DF_dapan.drop(index=[1,3]) DF_dapan.drop(['升级工单量','上线天数'],axis=1, inplace=True) DF_dapan.drop(DF_dapan[DF_dapan['升级工单量']==10].index) DF_dapan = DF_dapan[DF_dapan['升级工单量'] !=10 ] DF_dapan.loc[:,:] DF_dapan.iloc[:,:] DF_dapan.iloc[[0,2],[0,1]]
|
- 取数
df.loc['平均排队时长'] df.iloc[0]
|
- 去重
DF_dapan.drop_duplicates(inplace=True) DF_dapan.drop_duplicates(subset=['升级工单量','新增工单量'],keep='first',inplace=True)
|
二、数据清洗
DF_dapan = DF_dapan.dropna(inplace = True) DF_dapan.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
|
三、时间处理
DF_dapan['创建日期']= DF_dapan.to_datetime(DF_dapan['创建日期'],format='%Y/%m/%d') DF_dapan['上线天数'] = (DF_dapan.to_datetime(DF_dapan['上线时间'], format='%Y%m%d', errors='coerce') - DF_dapan.to_datetime(DF_dapan['处理时间'], format='%Y%m%d', errors='coerce')).dt.days
|
四、插入数据(insert)
DF_dapan.insert(loc, column, value, allow_duplicates = False)
|
五、数据遍历(map、apply、applymap)
DF_dapan["性别"] = DF_dapan["性别"].map({"男":1, "女":0})
def gender_map(x): gender = 1 if x == "男" else 0 return gender DF_dapan["性别"] = DF_dapan["性别"].map(gender_map)
|
def apply_age(x,bias): return x+bias DF_dapan["年龄"] = DF_dapan["年龄"].apply(apply_age,args=(-3,))
|
DF_dapan.applymap(lambda x:"%.2f" % x) DF_dapan.round(2)
|
六、拼接
df.merge(df_1,df_2,how='outer')
pd.concat([df1,df2])
|
七、数据保存与读取
- 读取:
pd.read_excel
、pd.read_csv
、pd.read_json
、pd.read_html
- 写入:
df.to_csv
、df.to_json
、df.to_html
、df.to_excel
- 转换
dfstr = df.to_string()
js001 = df.to_json(force_ascii=False)
八、常用函数
import pandas as pd path = 'E:\python\测试\\数据查询.xlsx' data = pd.DataFrame(pd.read_excel(path,sheet_name='Left',header=1,converters={'A': str})) data.index data.index.values data.values data.sort_index() data.sort_values() data.head( 5 ) data.tail( 3 ) data.values data.shape data.isnull() data.unique() data.columns data.sort_index() data.sort_values() pd.merge(data1,data2) pd.merge(data1,data2,on=[a],how='left') ''' 'left':merge时,以左边表格的键为基准进行配对,如果左边表格中的键在右边不存在,则用缺失值NaN填充。 'right':merge时,以右边表格的键为基准进行配对,如果右边表格中的键在左边不存在,则用缺失值NaN填充。 ''' pd.concat([data1,data2],axis=0) pd.concat([data01,data02,data03],axis=1) pd.pivot_table( data ) data.reset_index() data.reindex() data.index = range(len(data)) a=data['x'] b=data[['x']] c=data[['w','z']] data.loc['A'] data.loc[:,['x','z'] ] data['name'].values data.head(4) data.tail(3) data= data.iloc[2:, 2:20] [m, n] = data.shape df.drop([0],axis=0) data.notnull() data.dropna() data.dropna() data.dropna(axis=1) data.dropna(how='all') data.dropna(thresh=2) data.strip() data.fillna(0) data.replace(1, -1) data.fillna(100) data.fillna({'语文':100,'数学':100,}) data.fillna(method='ffill') data.fillna(method='bfill') data.fillna(method='bfill',limit=1)
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
print(data.columns.tolist())
data['有效起始日期'] = pd.to_datetime(data['有效起始日期'])
df["date"] = pd.to_datetime(df["date"])
df["year-month-day"] = df["date"].apply(lambda x: x.strftime("%Y-%m-%d"))
df["year"] = df["date"].apply(lambda x: x.strftime("%Y"))
df["month"] = df["date"].apply(lambda x: x.strftime("%m"))
df["day"] = df["date"].apply(lambda x: x.strftime("%d"))
df["month-day"] = df["date"].apply(lambda x: x.strftime("%Y-%m"))
df['week'] = df['date'].apply(lambda x: x.strftime('%W')) --加一天 df['data_date'] + pd.Timedelta(days=1) --减一天 df['data_date'] - pd.Timedelta(days=1) print(df) print(df.dtypes)
data = data.loc[(data['物料编码'] == bianma)]
data = data.groupby(["年/月", "物料编码",'商品名称'], axis = 0)["数量(Kg)"].sum().reset_index() '''reset_index()可以将分类汇总导致的缩进填充进去'''
|