spark 数据框 删除列_pandas 常用的数据处理函数
1.數據查看
數據量過大時,直接打印變量無法全面進行展示,這時候可以通過函數對數據框中前后幾條數據進行查看,方便我們初步去了解數據的一個大體情況:
import1.1 查看數據前/后幾行
data.head(3) #不寫幾行默認5行 data.tail(2)1.2 查看數據索引
data.index1.3 查看列名
data.columns1.4 查看數據類型
data.dtypes1.5 查看數據的基本分布情況
只對數值類型的字段有作用,包括了計數,均值,標準差,最大最小值和四分位數
data.describe()2. 數據篩選
數據切片是處理函數中經常需要使用到的操作,相類似于 sql 語句中的 select。ps:同樣使用以上面數據框 data 作為示例,下同。
2.1 列切片
data['A'] data[['A', 'B']] # 同時選擇多列2.2 行切片
data[2:4] # 選擇第2到第三3行 data['b':'c'] # 選擇多行2.3 同時對行列進行切片
# 通過標簽進行篩選 data.loc['a':'c', ['A', 'C']] data.loc[['a','c'], ['A', 'C']]# 通過位置進行篩選 data.iloc[3] # 不指定列的話,默認是選擇行,單獨選擇某一行的話返回的不是一個數據框 data.iloc[2:4] # 返回一個數據框 data.iloc[:, 1] # 選擇單列,返回的不是一個數據框 data.iloc[:, 1:3] # 選擇多列 data.iloc[[1, 2, 3], [0, 2]] # 選擇不連續的多行多列2.4 條件篩選
# 單條件 data[data['C'] >= 30 ] # 單列多條件 data[data['E'].isin(['小白', '小明'])] # 多列多條件 data.loc[(data['B']>0.5) & (data['C']<30)]3. 數據增加
3.1 添加新的列
# 增加一列同樣的值 data['F'] = 1 # 增加一列不一致的值(可以是series也可以是list) data['G'] = pd.Series([11, 22, 33, 44], index=['a', 'b', 'c', 'd']) data['H'] = [1, 2, 3, 4]3.2 添加新的行
append:
data.append(data.iloc[2:4]) data.append(data.iloc[3], ignore_index=True) #參數ignore_index=True,索引重新排列, 默認是Falseconcat: 同樣有ignore_index參數,可以有字段不一致的情況。PS:合并的對象必須是dataframe
pd.concat([data, data.iloc[1:3]], ignore_index=True) data_NA = pd.concat([data, data.iloc[[1, 2, 3], [0, 2]]], ignore_index=True)3.3 數據連接
merge: 兩個數據表連接,類似于 sql 語句中的 join,字段可以不一致
pd.merge(data, data.iloc[[1, 2, 3], [0, 2]], on='A')4. 數據修改
dataframe 中的數據都是可以進行修改的,具體如下所示:
# 修改某一列 data['F'] = data['F'] + 1 # 修改某個值 data['F'].iloc[2] = 235. 數據刪除
5.1 刪除列
data_drop = data.drop('A', axis=1) # 此時的data仍然是完整的5.2 刪除行
data_drop = data.drop('a', axis=0) # 對于滿足條件的索引列表進行刪除6. 常見數據的讀入寫出
6.1 Excel
# 讀入 data = pd.read_excel('data.xlsx', encoding='utf8') # 寫出 data.to_excel('data.xlsx', encoding='utf8', index=None)6.2 CSV
# 讀入 data = pd.read_csv('data.csv', encoding='utf8') # 寫出 data.to_csv('data.csv', encoding='utf8', index=None)6.3 txt
def load_data(file_path, encoding='utf8'):"""導入數據:param file_path: 數據存放路徑:return: 返回數據列表"""f = open(file_path, encoding=encoding) data = []for line in f.readlines():row = [] # 記錄每一行lines = line.strip().split("t") # 各字段按制表符切割for x in lines:row.append(x)data.append(row)f.close()return datadata = load_data('data.txt', encoding='utf8') data = pd.DataFrame(data[1:], columns=data[0]) # 第一行為字段名7. 處理異常值、重復值
7.1 NA
# 查看nan值分布的情況 pd.isna(data_NA) pd.isna(data_NA['H'])# 將nan填充成指定的值 data_NA['B'] = data_NA['B'].fillna(0) data_NA = data_NA.fillna(0)# 將數據中nan的數據全部替換成None,這樣int類型或str類型的數據入mysql數據庫的時候都顯示是null data_NA = pd.concat([data, data.iloc[[1, 2, 3], [0, 2]]], ignore_index=True) data_NA_1 = data_NA.where(data_NA.notnull(), None)# 刪除nan值 data_NA.dropna(how='any', axis=0) # 只要出現 nan 的行就刪除, 刪除列則改為 axis=1 data_NA.dropna(subset=['B']) # 對指定列出現 nan 的行進行刪除7.2 重復值
# 查看重復數據 data.duplicated() data.duplicated(['D'])# 對全部字段進行去重 data_dropdup = data.drop_duplicates() # 對指定字段進行去重操作 data_dropdup = data.drop_duplicates(['C', 'F'])8. dataframe 的屬性
8.1 數據框的索引重排列
適用于數據框篩選、合并等導致索引不連續的情況
data = data.reset_index(drop=True)8.2 數據框的列名修改
data.columns = ['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1']8.3 修改數據框或者指定列的類型
data['B1'] = data['B1'].astype('int') # int 類型導致小數點后面被舍棄了9. mysql數據庫操作
import sqlalchemy# 讀取 conn = sqlalchemy.create_engine('mysql+pymysql://用戶名:密碼@IP/數據庫名?charset='數據庫編碼') da = pd.read_sql("SELECT * FROM 表名;",conn) #雙引號里可以放入sql語句 Ps:若是類似LIKE '%文字%' 的結構,則需要改成LIKE '%%文字%%'# 寫入pd.io.sql.to_sql(dataframe, '表名', conn, schema='數據庫名', if_exists='append', index=False) # index=False表示不把索引寫入10. 遍歷計算
只將遍歷計算作用在某一列上
data['G1'] = data['G1'].astype(str).apply(lambda x : 'ZZ'+str(x)) # spply里面可以定義匿名函數直接將整個dataframe的每一列都套用函數進行遍歷計算
data = data.apply(lambda x : str(x)+1) # 只能用于當操作可以適用于每個字段的類型的情況11. 分組和統計個數
import pandas as pd import numpy as np data = pd.DataFrame({'H':np.random.randint(2, 8, size=10), 'J':np.random.randint(0, 5, size=10),'K':np.random.uniform(size=10)})# 分組 data.groupby('H').sum() # 對H進行分組并展示剩余數值類型列的和 data.groupby('H')['J'].sum() # 對H進行分組并展示相對應的J列的和 data.groupby(['H', 'J']).sum() # 對H,J進行分組并展示相對應的剩余數值類型列的和# 統計data中H列每個值出現的次數 result1 = data['H'].value_counts() # 按照計數量的大小排序 以下和上面得到結果一致 result2 = data.groupby('H')['H'].count() # 對H進行分組并展示相對應的H列的個數12. 數據塑性——長寬表變換
import pandas as pd import numpy as np data_start = pd.DataFrame({ "城市":["廣州","深圳","上海","杭州","北京"], "銷售1部":[877,932,970,340,234], "銷售2部":[453,899,290,213,555], "銷售3部":[663,380,223,900,330], "銷售4部":[505,800,200,252,330] })12.1 寬變長
在數據分析中,經常需要長表數據去繪制圖表或者訓練模型,而當你拿到的數據數匯總后的表格時,便可以采用寬表轉長表的方式
data_long = data_start.melt( id_vars=["城市"], # 保留的字段 var_name="部門", # 分類變量 value_name="數量" # 度量值字段)12.2 長變寬
用于數據匯總,比較不常用
data_long.pivot_table( index=["城市"], #行(可以是多類別變量) columns=["部門"], #列(可以是多類別變量) values=["數量"] #值)關于 pandas 數據處理的常用操作就分享到這里啦,有其他常用便捷的方法歡迎在下方留言哦~
如果對你有用的話,隨手點個贊喲
總結
以上是生活随笔為你收集整理的spark 数据框 删除列_pandas 常用的数据处理函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件后缀_电脑文件名的后缀即扩展名的显示
- 下一篇: 内网通看不到其他人_小学生在新版本里用“