中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
技巧 | 分享100個Pandas常用基礎指令
userphoto

2023.09.02 浙江

關注

藍字Python當打之年'

后臺回復'1',領取眾多Python學習資料
大家好,我是歐K~
期分享100個Pandas常用基礎指令,主要涉及讀取數(shù)據(jù)和保存數(shù)據(jù)、數(shù)據(jù)詳情信息、數(shù)據(jù)處理、數(shù)據(jù)切片、篩選、排序、分組、統(tǒng)計、表格樣式等幾部分內容,希望對你有所幫助。

往期相關:
Pandas常用操作命令(一)
Pandas常用操作命令(二)
Pandas常用操作命令(三)
Pandas常用操作命令(四)
1. 導入模塊

import pandas as pd
import numpy as np

2. 讀取數(shù)據(jù)和保存數(shù)據(jù)

2.1 從CSV文件讀取數(shù)據(jù),編碼'gbk'

2.2 讀取前6行,當數(shù)據(jù)量比較大時,可以只讀取前n行
2.3 第一列作為行索引,忽略列索引
2.4 讀取時忽略第1/3/5行和最后兩行
2.5 從限定分隔符(',')的文件或文本讀取數(shù)據(jù)

2.6 保存數(shù)據(jù)

# 2.1 從CSV文件讀取數(shù)據(jù),編碼'gbk'
pd.read_csv(filename, encoding='gbk')

# 2.2 讀取前6行,當數(shù)據(jù)量比較大時,可以只讀取前n行
pd.read_csv(filename, encoding='gbk', nrows = 6)

# 2.3 第一列作為行索引,忽略列索引
pd.read_csv(filename, encoding='gbk', header=None, index_col=0)

# 2.4 讀取時忽略第1/3/5行和最后兩行
pd.read_csv(filename, encoding='gbk', skiprows=[1,3,5], skipfooter=2, engine='python')

# 2.5 從限定分隔符(',')的文件或文本讀取數(shù)據(jù)
pd.read_table(filename, sep=',', encoding='gbk')

# 2.6 保存數(shù)據(jù)
# 保存為csv文件
df.to_csv('test_ison.csv')
# 保存為xlsx文件
df.to_excel('test_xlsx.xlsx',index=False)
# 保存為ison文件
df.to_json('test_json.txt')


3. 查看數(shù)據(jù)信息

3.1 查看前n行

3.2 查看后n行
3.3 查看行數(shù)和列數(shù)
3.4 查看列索引
3.5 查看行索引
3.6 查看索引、數(shù)據(jù)類型和內存信息

3.7 查看數(shù)值型列的匯總統(tǒng)計

3.8 查看每一列的唯一值和計數(shù)

# 3.1 查看前n行
df.head(3)

# 3.2 查看后n行
df.tail(3)

# 3.3 查看行數(shù)和列數(shù)
df.shape

# 3.4查看列索引
df.columns

# 3.5 查看行索引
df.index

# 3.6 查看索引、數(shù)據(jù)類型和內存信息
df.info()

# 3.7 查看數(shù)值型列的匯總統(tǒng)計
df.describe()

# 3.8 查看每一列的唯一值和計數(shù)
df.apply(pd.Series.value_counts)

4. 數(shù)據(jù)處理

4.1 重命名列名

4.2 選擇性更改列名

4.3 批量更改索引

4.4 批量更改列名

4.5 設置姓名列為行索引

4.6 檢查哪些列包含缺失值

4.7 統(tǒng)計各列空值

4.8 刪除本列中空值的行

4.9 僅保留本列中是空值的行

4.10 去掉某行

4.11 去掉某列

4.12 刪除所有包含空值的行

4.13 刪除行里全都是空值的行

4.14 刪除所有包含空值的列

4.15 保留至少有6個非空值的行

4.16 保留至少有11個非空值的列

4.17 行數(shù)據(jù)向下填充

4.18 列數(shù)據(jù)向右填充

4.19 用0替換所有的空值

4.20 強制轉換數(shù)據(jù)類型

4.21 查看有多少不同的城市

4.22 單值替換

4.23 多值替換

4.24 多值替換單值

4.25 替換某列,顯示需要加inplace=True

4.26 拆分某列,生成新的Dataframe

4.27 某一列類型轉換,注意該列類型要一致,包括(NaN

# 4.1 重命名列名
df.columns = ['姓名','性別','語文','數(shù)學','英語','城市','省份']

# 4.2 選擇性更改列名
df.rename(columns={'姓名''姓--名','性別''性--別'},inplace=True)

# 4.3 批量更改索引
df.rename(lambda x: x + 10)

# 4.4 批量更改列名
df.rename(columns=lambda x: x + '_1')

# 4.5 設置姓名列為行索引
df.set_index('姓名')

# 4.6 檢查哪些列包含缺失值
df.isnull().any()

# 4.7 統(tǒng)計各列空值
df.isnull().sum()

# 4.8 刪除本列中空值的行
df[df['數(shù)學'].notnull()]
df[~df['數(shù)學'].isnull()]

# 4.9 僅保留本列中是空值的行
df[df['數(shù)學'].isnull()]
df[~df['數(shù)學'].notnull()]

# 4.10 去掉某行
df.drop(0, axis=0)

# 4.11 去掉某列
df.drop('英語', axis=1)

# 4.12 刪除所有包含空值的行
df.dropna()

# 4.13 刪除行里全都是空值的行
df.dropna(how = 'all')

# 4.14 刪除所有包含空值的列
df.dropna(axis=1)

# 4.15 保留至少有6個非空值的行
df.dropna(thresh=6)

# 4.16 保留至少有11個非空值的列
df.dropna(axis=1,thresh=11)

# 4.17 行數(shù)據(jù)向下填充
df.fillna(method = 'ffill')

# 4.18 列數(shù)據(jù)向右填充
df.fillna(method = 'ffill',axis=1)

# 4.19 用0替換所有的空值
df.fillna(0)

# 4.20 強制轉換數(shù)據(jù)類型
df_t1 = df.dropna()
df_t1['語文'].astype('int')

# 4.21 查看有多少不同的城市
df['城市'].unique()

# 4.22 單值替換
df.replace('蘇州''南京')

# 4.23 多值替換
df.replace({'蘇州':'南京','廣州':'深圳'})
df.replace(['蘇州','廣州'],['南京','深圳'])

# 4.24 多值替換單值
df.replace(['深圳','廣州'],'東莞')

# 4.25 替換某列,顯示需要加inplace=True
df['城市'] = df['城市'].replace('蘇州''南京')

# 4.26 拆分某列,生成新的Dataframe
df1 = df['姓名'].str.split('-',expand=True)
df1.columns = ['學號','姓名']

# 4.27 某一列類型轉換,注意該列類型要一致,包括(NaN)
df1.dropna(inplace = True)
df1['語文'] = df1['語文'].apply(int)

5. 數(shù)據(jù)切片、篩選

5.1 輸出城市為上海

5.2 輸出城市為上?;驈V州

5.3 輸出城市名稱中含有'?!值男?/span>

5.4 輸出城市名稱以'?!珠_頭的行

5.5 輸出城市名稱以'海’字結尾的行

5.6 輸出所有姓名,缺失值用Null填充

5.7 重置索引

5.8 前兩行

5.9 后兩行

5.10 2-8行

5.11 每隔3行讀取

5.12 2-8行,步長為2,即第2/4/6行

5.13 選取'語文','數(shù)學','英語'列

5.14 學號為'001'的行,所有列

5.15 學號為'001'或'003'的行,所有列

5.16 學號為'001'至'009'的行,所有列

5.17 列索引為'姓名',所有行

5.18 列索引為'姓名'至'城市’,所有行

5.19 語文成績大于80的行

5.20 語文成績大于80的人的學號和姓名

5.21 輸出'趙四'和'周七'的各科成績

5.22 選取第2行

5.23 選取前3行

5.24 選取第2行、第4行、第6行

5.25 選取第2列

5.26 選取前3列

5.27 選取第3行的第3列

5.28 選取第1列、第3列和第4列

5.29 選取第2行的第1列、第3列、第4列

5.30 選取前3行的前3列

# 5.1 輸出城市為上海
df[df['城市']=='上海']

# 5.2 輸出城市為上海或廣州
df[df['城市'].isin(['上海','廣州'])]

# 5.3 輸出城市名稱中含有'?!值男?/span>
df[df['城市'].str.contains('海', na=False)]

# 5.4 輸出城市名稱以'海’字開頭的行
df[df['城市'].str.startswith('海', na=False)]

# 5.5 輸出城市名稱以'?!纸Y尾的行
df[df['城市'].str.endswith('海', na=False)]

# 5.6 輸出所有姓名,缺失值用Null填充
df['姓名'].str.cat(sep='、',na_rep='Null')

# 5.7 重置索引
df2 = df1.set_index('學號')

# 5.8 前兩行
df2[:2]

# 5.9 后兩行
df2[-2:]

# 5.10 2-8行
df2[2:8]

# 5.11 每隔3行讀取
df2[::3]

# 5.12 2-8行,步長為2,即第2/4/6行
df2[2:8:2]

# 5.13 選取'語文','數(shù)學','英語'列
df2[['語文','數(shù)學','英語']]

# df.loc[]只能使用標簽索引,不能使用整數(shù)索引,通過便簽索引切邊進行篩選時,前閉后閉
# 5.14 學號為'001'的行,所有列
df2.loc['001', :]

# 5.15 學號為'001'或'003'的行,所有列
df2.loc[['001','003'], :]

# 5.16 學號為'001'至'009'的行,所有列
df2.loc['001':'009', :]

# 5.17 列索引為'姓名',所有行
df2.loc[:, '姓名']

# 5.18 列索引為'姓名'至'城市’,所有行
df2.loc[:, '姓名':'城市']

# 5.19 語文成績大于80的行
df2.loc[df2['語文']>80,:]
df2.loc[df2.loc[:,'語文']>80, :]
df2.loc[lambda df2:df2['語文'] > 80, :]

# 5.20 語文成績大于80的人的學號和姓名
df2.loc[df2['語文']>80,['姓名','城市']]

# 5.21 輸出'趙四'和'周七'的各科成績
df2.loc[df2['姓名'].isin(['趙四','周七']),['姓名','語文','數(shù)學','英語']]

# # df.iloc[]只能使用整數(shù)索引,不能使用標簽索引,通過整數(shù)索引切邊進行篩選時,前閉后開
# 5.22 選取第2行
df2.iloc[1, :]

# 5.23 選取前3行
df2.iloc[:3, :]

# 5.24 選取第2行、第4行、第6行
df2.iloc[[1,3,5],:]

# 5.25 選取第2列
df2.iloc[:, 1]

# 5.26 選取前3列
df2.iloc[:, 0:3]

# 5.27 選取第3行的第3列
df2.iloc[33]

# 5.28 選取第1列、第3列和第4列
df2.iloc[:, [0,2,3]]

# 5.29 選取第2行的第1列、第3列、第4列
df2.iloc[1, [0,2,3]]

# 5.30 選取前3行的前3列
df2.iloc[:3, :3]

6. 數(shù)據(jù)排序

6.1 重置索引

6.2 按照語文成績升序排序,默認升序排列

6.3 按照數(shù)學成績降序排序

6.4 先按語文成績升序排列,再按數(shù)學成績降序排列

6.5 語文成績80及以上

6.6 語文成績80及以上以及數(shù)學成績90分及以上

6.7 語文成績80及以上或數(shù)學成績90分及以上

6.8 輸出成績100的行和列號

6.9 增加一列“省份-城市”

6.10 增加一列總分

6.11 按照總分、語文、數(shù)學、英語成績依次排序

6.12 新增一列表示學生語文成績等級的列(優(yōu)秀、良好、中等、不及格)

# 6.1 重置索引
df_last = df1.reset_index(drop=True)

# 6.2 按照語文成績升序排序,默認升序排列
df_last.sort_values('語文')

# 6.3 按照數(shù)學成績降序排序
df_last.sort_values('數(shù)學', ascending=False)

# 6.4 先按語文成績升序排列,再按數(shù)學成績降序排列
df_last.sort_values(['語文','數(shù)學'], ascending=[True,False])

# 6.5 語文成績80及以上
df_last[df_last['語文']>=80]
df_last.query('語文 > 80')

# 6.6 語文成績80及以上以及數(shù)學成績90分及以上
df_last[(df_last['語文']>=80) & (df_last['數(shù)學']>=90)]

# 6.7 語文成績80及以上或數(shù)學成績90分及以上
df_last[(df_last['語文']>=80) | (df_last['數(shù)學']>=90)]

# 6.8 輸出成績100的行和列號
row, col = np.where(df_last.values == 100)

# 6.9 增加一列“省份-城市”
df_last['省份-城市'] = df_last['省份'] + '-' + df_last['城市']

# 6.10 增加一列總分
df_last['總分'] = df_last[['語文','數(shù)學','英語']].sum(axis = 1)

# 6.11 按照總分、語文、數(shù)學、英語成績依次排序
df_last.sort_values(by =['總分','語文','數(shù)學','英語'],ascending=False )

# 6.12 新增一列表示學生語文成績等級的列(優(yōu)秀、良好、中等、不及格)
def get_letter_grade(score):
    '''
    定義一個函數(shù),根據(jù)分數(shù)返回相應的等級
    '''

    if score>=90:
        return '優(yōu)秀'
    elif score>=80:
        return '良好'
    elif score>=60:
        return '中等'
    else:
        return '不及格'
    
df_last['語文等級'] = df_last['語文'].apply(lambda score: get_letter_grade(score))

7. 數(shù)據(jù)分組

7.1 一列分組

7.2 多列分組

7.3 每組的統(tǒng)計數(shù)據(jù)(橫向顯示)

7.4 每組的統(tǒng)計數(shù)據(jù)(縱向顯示)

7.5 查看指定列的統(tǒng)計信息

7.6 分組大小

7.7 分組成績最大值

7.8 分組成績最小值

7.9 分組成績總和

7.10 分組平均成績

7.11 按省份分組,計算英語成績總分和平均分

7.12 按省份、城市分組計算平均成績

7.13 不同列不同的計算方法

7.14 性別分別替換為1/0

7.15 增加一列按省份分組的語文平均分

7.16 輸出語文成績最高的男生和女生(groupby默認會去掉空值)

7.17 按列省份、城市進行分組,計算語文、數(shù)學、英語成績最大值的透視表

# 7.1 一列分組
df2.groupby('省份').groups

# 7.2 多列分組
df2.groupby(['省份','城市']).groups

# 7.3 每組的統(tǒng)計數(shù)據(jù)(橫向顯示)
df2.groupby('省份').describe()

# 7.4 每組的統(tǒng)計數(shù)據(jù)(縱向顯示)
df2.groupby('省份').describe().unstack()

# 7.5 查看指定列的統(tǒng)計信息
df2.groupby('省份').describe()['語文']

# 7.6 分組大小
df2.groupby('省份').count()
df2.groupby('省份').agg(np.size)

# 7.7 分組成績最大值
df2.groupby('省份').max()
df2.groupby('省份').agg(np.max)

# 7.8 分組成績最小值
df2.groupby('省份').min()
df2.groupby('省份').agg(np.min)

# 7.9 分組成績總和
df2.groupby('省份').sum()
df2.groupby('省份').agg(np.sum)

# 7.10 分組平均成績
df2.groupby('省份').mean()
df2.groupby('省份').agg(np.mean)

# 7.11 按省份分組,計算英語成績總分和平均分
df2.groupby('省份')['英語'].agg([np.sum, np.mean])

# 7.12 按省份、城市分組計算平均成績
df2.groupby(['省份','城市']).agg(np.mean)

# 7.13 不同列不同的計算方法
df2.groupby('省份').agg({'語文': sum, # 總和
                        '數(shù)學''count'# 總數(shù)
                        '英語':'mean'}) # 平均

# 7.14 性別分別替換為1/0
df2 = df2.dropna()
df2['性別'] = df2['性別'].map({'男':1'女':0})

# 7.15 增加一列按省份分組的語文平均分
df2['語文平均分'] = df2.groupby('省份')['語文'].transform('mean')

# 7.16 輸出語文成績最高的男生和女生(groupby默認會去掉空值)
def get_max(g):
    df = g.sort_values('語文',ascending=True)
    print(df)
    return df.iloc[-1,:]

df2.groupby('性別').apply(get_max)

# 7.17 按列省份、城市進行分組,計算語文、數(shù)學、英語成績最大值的透視表
df.pivot_table(index=['省份','城市'], values=['語文','數(shù)學','英語'], aggfunc=max)

8. 數(shù)據(jù)統(tǒng)計

8.1 數(shù)據(jù)匯總統(tǒng)計

8.2 列中非空值的個數(shù)

8.3 列最小值

8.4 列最大值

8.5 列均值

8.6 列中位數(shù)

8.7 列與列之間的相關系數(shù)

8.8 列的標準差

8.9 語文成績指標

8.10 三個科目的指標

# 8.1 數(shù)據(jù)匯總統(tǒng)計
df.describe()

# 8.2 列中非空值的個數(shù)
df.count()

# 8.3 列最小值
df.min()

# 8.4 列最大值
df.max()

# 8.5 列均值
df.mean()

# 8.6 列中位數(shù)
df.median()

# 8.7 列與列之間的相關系數(shù)
df.corr()

# 8.8 列的標準差
df.std()

# 8.9 語文成績指標
# 對語文列求和
sum0 = df_last['語文'].sum()
# 語文成績方差
var = df_last['語文'].var()
# 語文成績標準差
std = df_last['語文'].std()
# 語文平均分
mean = df_last['語文'].mean()

print('語文總分:',sum0)
print('語文平均分:',mean)
print('語文成績標準差:',std)
print('語文成績方差:',var)

# 8.10 三個科目的指標
mean = df_last[['語文','數(shù)學','英語']].mean()
var  = df_last[['語文','數(shù)學','英語']].var()
total = df_last[['語文','數(shù)學','英語']].sum()
std = df_last[['語文','數(shù)學','英語']].std()
rows = [total,mean,var,std]
# 索引列表
index = ['總分','平均分','方差','標準差']
# 根據(jù)指定索引和行構造 DataFrame 對象
df_tmp = pd.DataFrame(rows,index=index)

9. 表格樣式

9.1 示例數(shù)據(jù)

9.2 列重命名

9.3 設置空值背景紅色

9.4 最大數(shù)據(jù)高亮

9.5 最小數(shù)據(jù)高亮

9.6 部分列最大數(shù)據(jù)高亮

9.7 部分列數(shù)據(jù)高亮(Dataframe全為數(shù)據(jù))

9.8 95分以上顯示紅色

9.9 混合

9.10 設置float類型列數(shù)據(jù)大于80.0的背景高亮

9.11 設置數(shù)學成績大于80.0分的行背景高亮

9.12 設置數(shù)學成績大于95.0的行數(shù)據(jù)顏色為紅色

9.13 顯示熱度圖

# 9.1 示例數(shù)據(jù)
df = pd.read_csv(filename, encoding='gbk')

# 9.2 列重命名
df.columns = ['姓名','性別','語文','數(shù)學','英語','城市','省份']

# 9.3 設置空值背景紅色
df.style.highlight_null(null_color = 'red')

# 9.4 最大數(shù)據(jù)高亮
df.style.highlight_max()

# 9.5 最小數(shù)據(jù)高亮
df.style.highlight_min()

# 9.6 部分列最大數(shù)據(jù)高亮
df.style.apply(highlight_max, subset=['語文''數(shù)學'])

# 9.7 部分列數(shù)據(jù)高亮(Dataframe全為數(shù)據(jù))
df3 = df[['語文','數(shù)學','英語']]
def highlight_max(s):
    is_max = s == s.max()
    return ['background-color: yellow' if v else '' for v in is_max]

df3.style.apply(highlight_max)

# 9.8 95分以上顯示紅色
def color_negative_red(val):
    color = 'red' if val > 95.0 else 'black'
    return 'color: %s' % color

df3.style.applymap(color_negative_red)

# 9.9 混合
df3.style.applymap(color_negative_red).apply(highlight_max)

# 9.10 設置float類型列數(shù)據(jù)大于80.0的背景高亮
yellow_css = 'background-color: yellow'
sfun = lambda x: yellow_css if type(x) == float and x > 80.0 else ''
df3.style.applymap(sfun)

# 9.11 設置數(shù)學成績大于80.0分的行背景高亮
yellow_css = 'background-color: yellow'
sfun = lambda x: [yellow_css]*len(x) if x.數(shù)學 > 80.0 else ['']*len(x)
df3.style.apply(sfun, axis=1)

# 9.12 設置數(shù)學成績大于95.0的行數(shù)據(jù)顏色為紅色
def row_color(s):
    if s.數(shù)學 > 95:
        return ['color: red']*len(s)
    else:
        return ['']*len(s)

df3.style.apply(row_color, axis=1)

# 9.13 顯示熱度圖
import seaborn as sns
cm = sns.light_palette('green', as_cmap=True)
df3.style.background_gradient(cmap=cm)

END

以上就是本期為大家整理的全部內容了,喜歡的朋友可以

點贊、點在看
也可以分享讓更多人知道。

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python之pandas實現(xiàn)更復雜的Excel操作
5-Pandas數(shù)據(jù)處理
Pandas 中文API文檔
Python學習教程:從Excel到Python:最常用到的Pandas函數(shù)(下)
Python學習筆記
利用Python進行數(shù)據(jù)分析:【Pandas】(Series+DataFrame)
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服