日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python数据表_第1关:了解python数据表操作

發(fā)布時(shí)間:2023/12/19 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python数据表_第1关:了解python数据表操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如果你已經(jīng):安裝好python

有一點(diǎn)python語言基礎(chǔ)

而且沒有過系統(tǒng)化的python學(xué)習(xí)

希望掌握常見的dataframe處理方法

這篇文章將幫助你掌握工作中常用的工作表操作。

文章閱讀時(shí)間約40min。

1. 導(dǎo)入package:pandas

import pandas as pd

2. 數(shù)據(jù)讀取與保存讀取文件

temp = pd.read_excel("file_path",sheet_name= "sheet_name" ) # sheet_name可以缺省

temp_1 = pd.read_csv("file_path",encoding='utf-8') #file_path不可以出現(xiàn)中文;也可以用來讀取txt文件;encoding可以缺省

temp_2 = pd.read_csv("file_path",encoding='gbk') #輸出文件

# 輸出單個(gè)文件

temp.to_excel('file_path',index=False) # 通過設(shè)置index參數(shù)確定是否保留dataframe中的index

temp_1.to_csv('file_path',index=False,encoding='utf-8')輸出多個(gè)文件到同一個(gè)excel中

writer = pd.ExcelWriter('file_path') # 生成一個(gè)新的文件

temp_2.to_excel(writer,sheet_name='temp_2') # 保存第一個(gè)表格 temp_2

temp_3.to_excel(writer,sheet_name='temp_3') # 保存第二個(gè)表格 temp_3

writer.save()創(chuàng)建新的dataframe

# 使用list創(chuàng)建df

df = pd.DataFrame([[np.nan, 2, np.nan, 0],

[3, 4, np.nan, 1],

[np.nan, np.nan, np.nan, 5],

[np.nan, 3, np.nan, 4]],

columns=list('ABCD'))

#通過字典創(chuàng)建df

test_dict = {'A':[np.nan,3,np.nan,np.nan],

'B':[2,4,np.nan,3],

'C':[np.nan,np.nan,np.nan,np.nan],

'D':[0,1,5,4]}

df = pd.DataFrame(test_dict)

3. 數(shù)據(jù)初步描述

# 查看前幾行與后幾行

temp.head()

temp.tail()

# 查看df行列數(shù)

temp.shape

temp.shape[1] # 單獨(dú)查看列數(shù)

# 查看df各變量描述性統(tǒng)計(jì)

temp.describe()

temp.info()

# 查看df列名

temp.columns

4. 數(shù)據(jù)行列操作

4.1 修改列名

### 修改全部列名

temp.columns = ["col_name1","col_name2",...] #需與temp表列數(shù)相同

### 修改部分列名

temp_1 = temp.copy()

temp_1.rename(columns={'Province':'省份'},inplace=True)

### 將表格列名放入list中

cols = temp_1.columns.tolist()

4.2 增減行列增加一列

temp['test'] = 1

#通過原有列簡(jiǎn)單計(jì)算

temp['test2'] = temp['Value'] + temp['test']

#基于原有列增加列

temp['test3'] = temp['Value'].apply(lambda x: '>100' if x>100 else '<=100')

temp[(temp['col_name']> 0) &(temp['col_name']== 0) ,'new_col_name'] = 1基于原有多列增加列

def cal_label(province,value):

if (province in ['北京','上海','廣東']) & (value>1000):

return 'High'

elif (province in ['西藏','新疆','海南']) & (value<100):

return 'Low'

else:

return 'Medium'

temp['test4'] = temp.apply(lambda x: cal_label(x['Province'],x['Value']),axis=1)刪除行列

temp.drop("row_name",axis=0).head()

temp.drop("col_name",axis=1).head()

del temp["period"]

4.3 行列切片與數(shù)據(jù)選擇簡(jiǎn)單行切片

## 選取第2-4行

temp[2:5]

## iloc用法:通過行數(shù)篩選,eg:選擇第4行

temp.iloc[3]

## 選擇行index為"2020-01"的行

temp.loc["2020-01"]根據(jù)條件做行篩選

1.邏輯判斷符號(hào):

- "|" 代表 "or";

- "&" 代表 "and";

- "==" 代表 "等于";

- "~" 代表 "非"

Note:

1. 每個(gè)條件之間需要放括號(hào);

2. 不要使用"="作為邏輯判斷

## 篩選出col_name列<=3的所有行

temp[temp["col_name1"]<=3]

list(temp["col_name2"][temp["col_name1"]<=3])列切片

temp[['col_name1','col_name2']]

temp.iloc[:,1:3]

## 選擇連續(xù)行、連續(xù)列

temp.iloc[2:5,1:3]

## 選擇非連續(xù)行、非連續(xù)列

temp.iloc[[1,2,4],[1,3]]

## 用冒號(hào)表示所有行/所有列

temp.iloc[1:3,:]

temp.iloc[:,1:3]

## 選擇某個(gè)值

temp.iloc[0,0]

## 條件篩選

temp[temp['Province']=='上海']

temp[temp['Province'].isin(['上海','北京'])] # isin是用list篩選

temp[~(temp['Province'].isin(['上海','北京']))]

5. dataframe相關(guān)用法索引:index

temp = temp.reset_index()

temp = temp.set_index(["col_name"])排序:sort

temp = temp.sort_values(by=['Province','Period']).head()

temp = temp.sort_values(by=['Value'],ascending=False).head()去重:drop_duplicates

temp["col_name1"].unique()

## 按某列值去重

temp.drop_duplicates(subset=['Province']).head() #可以添加keep = first類似的參數(shù)

## 去重同時(shí)保留最大值

temp = temp.sort_values(by=['Province','Value'])

temp.drop_duplicates(subset=['Province'],keep='last').head()空值:dropna/fillna

df.isnull().sum()

#刪除缺失值記錄

df.dropna(subset=['A','B'], how='all')

#填補(bǔ)缺失值

df.fillna(0)用指定值填充/替換

values ={'col_name1':0,'col_name2':1,'col_name3':2}

df.fillna(value=values)

temp['col_name'].replace('a','A',inplace=True)

temp.head()寬表轉(zhuǎn)長(zhǎng)表,長(zhǎng)表轉(zhuǎn)寬表

## 長(zhǎng)轉(zhuǎn)寬:

temp_pivot = pd.pivot_table(temp, values='Value', # 列變行之后的值

index=['Period'], # 保留的列值

columns=['Province'], # 列變行之后,列名

aggfunc=np.sum).reset_index()

### 長(zhǎng)轉(zhuǎn)寬之后轉(zhuǎn)換行名為單一維度

temp_pivot.columns = ["".join((j)) for i,j in temp_pivot.columns]

## 寬轉(zhuǎn)長(zhǎng):

tepm_melt = pd.melt(temp_pivot,

id_vars=['Period'],# 保留的列值

value_vars=['上海', '云南', '內(nèi)蒙古', '北京', '吉林',

'四川', '天津', '寧夏', '安徽', '山東', '山西', '廣東', '廣西', '新疆', '江蘇', '江西', '河北',

'河南', '浙江', '海南', '湖北', '湖南', '甘肅', '福建', '西藏', '貴州', '遼寧', '重慶', '陜西',

'青海', '黑龍江'],# 轉(zhuǎn)換為列值

var_name='Province',# 列名

value_name='value')

6. 值統(tǒng)計(jì)

6.1 統(tǒng)計(jì)值

temp.loc["max"] = temp.max(axis=0)

## 針對(duì)離散型變量對(duì)每個(gè)值計(jì)數(shù)

temp['Province'].value_counts()

## 統(tǒng)計(jì)每個(gè)值占比

temp['Province'].value_counts(normalize=True)

## 非重復(fù)值計(jì)數(shù)

temp['Province'].nunique()

## 對(duì)數(shù)值型變量進(jìn)行基本的描述性統(tǒng)計(jì)

temp['Value'].describe()

6.2 數(shù)據(jù)計(jì)算group by

temp_groupby = temp.groupby(['Period','Province'])['Value'].sum().reset_index().sort_values(by=['Period'])

data1['排名'] = data1.groupby(['月份','小區(qū)'])['響應(yīng)率'].rank(ascending=0, method='min')分組排名

temp = temp.groupby(['Period'])['Value'].sum().reset_index().sort_values(by=['Period','Value'])

temp['rank'] = temp['Value'].groupby(temp['Period']).rank(ascending=1,method='dense')

temp.tail(10)

7. 數(shù)據(jù)合并merge,根據(jù)某列匹配兩個(gè)表格

df1.merge(df2, on = ["key"], how='right')

# 當(dāng)左右表格鍵名不一致時(shí)使用

df3.merge(df4, left_on='lkey',right_on='rkey')concat

# 需要保證列名/行數(shù)相同

## 行連接|列對(duì)齊

pd.concat([data1,data2,data3],keys=['data1','data2','data3'])

## 列連接|行對(duì)齊

pd.concat([data1,data2,data3],axis =1,keys =['data1','data2','data3'])

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的python数据表_第1关:了解python数据表操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。