Python 100日習熟(データ分析) - 71日目: str/object型変換、大文字/小文字変換、テキストアラインメント、取得長、出現回数、Pandasテキストデータ処理方法のエンコード

ここに画像の説明を挿入

1. テキストデータ型の紹介

  • Pandas テキスト データにobjectは2 つのタイプがありstring、データの列にテキストとデータが含まれている場合、デフォルトでオブジェクト タイプになります。
  • pandas1.0以前はテキストデータのみでオブジェクト型のみで、pandas1.01.0王朝以降は文字列型でした。
  • タイプが文字列として指定されていない場合、テキスト タイプは通常オブジェクトです。

1) 型式紹介

(1) データの列にはテキストとデータが含まれており、デフォルトではオブジェクト タイプです。

import pandas as pd
import numpy as np

df = pd.DataFrame({
    
    
    'A': ['a', 'b', 'c', 'd'],
    'B': ['ee', 'ff', 'gg', np.nan],
    'C': [1, 2, 3, 4],
    'D': [5, 6, 7, np.nan]
})
print(df)
print(df.dtypes)

操作結果:
ここに画像の説明を挿入

dtype(2)パラメータを設定して文字列型を指定する必要があります。

# 方法1 :dtype='string'
df = pd.DataFrame({
    
    'A': ['a', 'b', 'c', 'd']}, dtype='string')
print(df.dtypes)

# 方法2 : dtype=pd.StringDtype()
df = pd.DataFrame({
    
    'A': ['a', 'b', 'c', 'd']}, dtype=pd.StringDtype())
print(df.dtypes)

操作結果:
ここに画像の説明を挿入

2) 型変換

方法 1: astype による文字列へのキャスト

df = pd.Series({
    
    'A': ['a', 'b', 'c', 'd']})
# 转换前
print(df)
print(df.dtypes)
# 转换后
df = df.astype("string")
print(df)
print(df.dtypes)

操作結果:
ここに画像の説明を挿入

方法 2: df.convert_dtypes() によるインテリジェントなデータ型の選択

import pandas as pd
import numpy as np

df = pd.DataFrame({
    
    
    'A': ['a', 'b', 'c', 'd'],
    'B': ['ee', 'ff', 'gg', np.nan],
    'C': [1, 2, 3, 4],
    'D': [5, 6, 7, np.nan]
})
print('类型转换前')
print(df.dtypes)

df = df.convert_dtypes()  # 智能数据类型选择
print('类型转换后')
print(df.dtypes)

操作結果:
ここに画像の説明を挿入

3) タイプの違い

文字列型とオブジェクト型の違いは次のとおりです。

  • 数値出力を返す文字列アクセサ メソッドは、NA 値の存在に応じて、文字列の場合は null 許容整数型、オブジェクトの場合は int または float を常に返します。
  • 文字列型の場合、ブール値の出力を返すメソッドは、null 許容のブール値のブール データ型を返します。オブジェクト型は引き続きオブジェクトです。

違い1:文字列を数える場合

文字列 s.str.count() をカウントする場合:

  • どの文字列型も NaN を返さず、dtype はInt64です; dropna() で欠損値を削除した後、dtype もInt64
  • どのオブジェクト型も NaN を返さず、dtpye はfloat64です; dropna() によって欠損値を削除した後、dtype はInt64

文字列タイプ:

import pandas as pd
import numpy as np

s = pd.Series(['小明', '小红', None], dtype='string')
print("去除空值前:")
print(s)
print(s.str.count('小'))

print("去除空值后:")
s.dropna(inplace=True)
print(s)
print(s.str.count('小'))

操作結果:
ここに画像の説明を挿入

オブジェクト タイプ:

import pandas as pd
import numpy as np

s = pd.Series(['小明', '小红', None], dtype='object')
print("去除空值前:")
print(s)
print(s.str.count('小'))

print("去除空值后:")
s.dropna(inplace=True)
print(s)
print(s.str.count('小'))

操作結果:
ここに画像の説明を挿入

違い2:文字列チェック時

str.isdigit() 経由で文字列をチェックする場合:

  • 文字列型、ブール型を返す、dtype= ブール値、欠損値は NA
  • オブジェクト型ですが、戻り値の型はブール型ですが、しかし dtype = object, None は None を返します
import pandas as pd
import numpy as np

s = pd.Series(['小明', '小红', None], dtype='string')
print("string类型:")
print(s.str.isdigit())

s = pd.Series(['小明', '小红', None], dtype='object')
print("object:")
print(s.str.isdigit())

操作結果:
ここに画像の説明を挿入

2. Python 文字列組み込みメソッド

文字列は一般的なデータ型で、遭遇するテキストと json データはすべて文字列のカテゴリに属します。Python には、文字列を処理するための組み込みメソッドが多数あり、データの処理とクリーニングに非常に便利です。この記事では、大文字と小文字の変換、テキストの配置方法、

1) 大文字小文字変換

方法 例証する
文字列.lower() 文字列内のすべての大文字を小文字に変換します
文字列.upper() 文字列の小文字を大文字に変換する
文字列.大文字にする() 文字列の最初の文字を大文字にします
文字列.タイトル() 文字列内の各単語の最初の文字を大文字にする
文字列.swapcase() 文字列のフリップケース

2) テキストの配置

方法 例証する
string.bright(幅) 元の文字列を左揃えにし、長さ width までスペースを埋め込んだ新しい文字列を返します
string.rjust(幅) 元の文字列を右揃えにし、長さ width までスペースを埋め込んだ新しい文字列を返します
string.center(幅) 元の文字列を中央に配置し、長さ width までスペースを埋め込んだ新しい文字列を返します

3) 長さを取得する

方法 例証する
len(文字列) 文字列の長さを返します。

4) 出現回数を取得する

方法 例証する
カウント(文字列) 各文字列要素の出現回数を返します。

5) コーディング

方法 例証する
エンコード ('utf-8') 文字エンコーディング、文字列を渡す

3. Pandas は組み込みメソッドをどのように使用しますか?

  • 日常のデータクリーニングとデータ分析の過程で、文字列型のデータを処理する必要があることがよくあります。また、pandas にはSeries.str、文字列を処理するための組み込みのアクセサー ベースのメソッドが多数あります. pandas 固有の列が str を渡した後、さまざまな python 共通の文字処理メソッドと組み込み関数を使用できるため、文字列データを大幅に改善できます. .
  • Pandas .strcan use the string built-in method on the Series object by calling it (pandas の文字列処理関数は str で始まります) to operation on a column in the data frame. このベクトル化された操作により、処理効率が向上します。

1) 大文字小文字変換

方法 例証する
series_obj.str.lower() 文字列内のすべての大文字を小文字に変換します
series_obj.str.upper() 文字列の小文字を大文字に変換する
series_obj.str.capitalize() 文字列の最初の文字を大文字にします
series_obj.str.title() 文字列内の各単語の最初の文字を大文字にする
series_obj.str.swapcase() 文字列のフリップケース

データを準備します。

import pandas as pd
import numpy as np

series_obj = pd.Series(['A', 'b', 'ABC', 'Abc', 'abc', 'This is abc', np.nan], dtype='string')
print(df)

操作結果:
ここに画像の説明を挿入

1. 文字列内のすべての大文字を小文字に変換します。

series_obj.str.lower()

操作結果:
ここに画像の説明を挿入

2. 文字列内の小文字を大文字に変換します。

series_obj.str.upper()

操作結果:
ここに画像の説明を挿入

3. 文字列の最初の文字を大文字にします。

series_obj.str.capitalize()

操作結果:
ここに画像の説明を挿入

4. ひもを入れる各単語の最初の文字を大文字にする(大文字との違いに注意してください):

series_obj.str.title()

ここに画像の説明を挿入

5. 文字列のケースを裏返します。

series_obj.str.swapcase()

操作結果:
ここに画像の説明を挿入

2) テキストの配置

方法 例証する
series_obj.str.ljust(幅) 元の文字列を左揃えにし、長さ width までスペースを埋め込んだ新しい文字列を返します
series_obj.str.rjust(幅) 元の文字列を右揃えにし、長さ width までスペースを埋め込んだ新しい文字列を返します
series_obj.str.center(幅) 元の文字列を中央揃えにし、長さ width までスペースを埋め込んだ新しい文字列を返します

1. 元の文字列を左揃えにし、幅の長さまでスペースを埋め込んだ新しい文字列を返します。

# 左对齐:宽度为10,空余部分用 '-' 填充
series_obj.str.ljust(8, fillchar='-')

操作結果:
ここに画像の説明を挿入

2. 元の文字列を右揃えにし、 width の長さになるまでスペースを埋め込んだ新しい文字列を返します

# 右对齐:宽度为10,空余部分用 '-' 填充
series_obj.str.rjust(8, fillchar='-')

操作結果:
ここに画像の説明を挿入

3. 元の文字列を中央揃えにし、幅の長さまでスペースを埋め込んだ新しい文字列を返します。

# 居中对齐:宽度为10,空余部分用 '-' 填充
series_obj.str.center(8, fillchar='-')

操作結果:

ここに画像の説明を挿入

3) 長さを取得する

方法 例証する
series_obj.str.len(文字列) 文字列の長さを返します。
series_obj.str.len()

操作結果:
ここに画像の説明を挿入

4) 出現回数を取得する

方法 例証する
series_obj.str.count(文字列) 各文字列要素の出現回数を返します。

A が出現する回数をカウントします。count は大文字と小文字を区別します。

series_obj.str.count('A')
series_obj.str.count('a')

操作結果:

ここに画像の説明を挿入

5) コーディング

方法 例証する
series_obj.str.encode('utf-8') 文字エンコーディング、文字列を渡す

文字エンコーディングは utf8 に設定されています。

series_obj.str.encode('utf-8')

ここに画像の説明を挿入

4. 注意事項

1、.strアクセサーは Series データ構造でのみ使用できます. 通常の列変数 df.col に加えて、インデックス タイプ df.Index および df.columns も使用できます。

2、アクセスされるオブジェクトの型が文字列 str 型であることを確認してください. 最初に型を astype(str) 変換する必要がない場合、そうでない場合はエラーが報告されます

3. 次のようないくつかのメソッドは、stringSeries では使用できません。Seriesseries_obj.str.decode()はバイトではなく文字列を格納するためです。

series_obj.str.decode('utf-8')

操作結果:

ここに画像の説明を挿入

4.アクセサーは複数の接続で使用できます. たとえばseries_obj.str.lower().str.title()、エフェクト スタッキングを使用すると、次のようになります。

# 先设置全部小写,然后设置首字母大写
series_obj.str.lower().str.title()

操作結果:
ここに画像の説明を挿入

プロキシ IP

Python は爬虫類と切っても切れない関係にあります. 最近, 爬虫類を学びたいと思っている何人かの友人が私にプロキシ IP を見つける場所を尋ねてきました. ブロガー自身は安定性の高いクローラー プロキシ IP を使用しています: Shenlong HTTP Proxy (クリックして必要かどうかを調べることができます) )

本の紹介

「PyTorch チュートリアル: PyTorch を実際に使用する 21 のプロジェクト」

ここに画像の説明を挿入

PyTorch は、Torch ライブラリをベースにしたオープンソースの機械学習ライブラリで、Meta (旧 Facebook) の人工知能研究所を中心に開発されており、自然言語処理やコンピュータ ビジョンの分野で幅広い用途があります。この本では、MNIST の数字認識など、簡単にすぐに始められるシンプルで古典的な入門プロジェクトが紹介されており、プロジェクトを完了する過程で、読者はデータセット、モデル、トレーニングなどの基本的な概念を理解できます。この本では、R-CNN モデルなどのいくつかの実用的で古典的なモデルも紹介されています.このモデルの学習を通じて、読者はターゲット検出タスクの基本的な理解を持ち、基本的なネットワーク構造の原理をある程度理解することができます. また、本書には、現在人気の敵対的生成ネットワークや強化学習についても一定の紹介があり、読者が視野を広げ、最先端の方向性を把握するのに便利です。
くじを引きたくない場合は、JDの自動購入リンク: https://item.jd.com/13522327.html

おすすめ

転載: blog.csdn.net/yuan2019035055/article/details/128602503